D18758: Fix ASan error in test_cmakemanager by catching all signals before objects they are delivered to are deleted.

Gleb Popov noreply at phabricator.kde.org
Tue May 21 11:12:01 BST 2019


arrowd updated this revision to Diff 58398.
arrowd added a comment.


  Changes:
  
  - Import QtPromise 0.5.0 into kdevplatform/3dparty/ directory.
  - Remove synchronious KIO calls from Project::open() and use QPromises there instead.
  
  Current problems are:
  
  - The code looks messy. I'm probably missing how to handle these QPromises properly, without so much boilerplate code.
  - The change didn't actually help to fix the initial problem. Moreover, the test now crashes even without ASan on `master`, which probably means that KDevelop is unusable on FreeBSD ATM.
  
  ASan report looks pretty much the same, only source lines changed:
  
    PASS   : TestCMakeManager::initTestCase()
    PASS   : TestCMakeManager::testReload()
    =================================================================
    ==89230==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000443b60 at pc 0x000800ae7dd0 bp 0x7fffffffc130 sp 0x7fffffffc128
    READ of size 8 at 0x604000443b60 thread T0
        #0 0x800ae7dcf in KDevelop::StatusBar::showProgress(KDevelop::IStatus*, int, int, int) /home/arr/projects/kdevelop/kdevplatform/shell/statusbar.cpp:243:56
        #1 0x800824e3f in KDevelop::StatusBar::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/kdevplatform/shell/KDevPlatformShell_autogen/EWIEGA46WW/moc_statusbar.cpp:115:21
        #2 0x8056666a9 in QMetaCallEvent::placeMetaCall(QObject*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:520:9
        #3 0x805668248 in QObject::event(QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:1260:18
        #4 0x804378f50 in QWidget::event(QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qwidget.cpp:9383:25
        #5 0x8045b0a71 in QStatusBar::event(QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/widgets/qstatusbar.cpp:753:21
        #6 0x8043184de in QApplicationPrivate::notify_helper(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3736:37
        #7 0x80431d5d6 in QApplication::notify(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3687:18
        #8 0x80561640d in QCoreApplication::notifyInternal2(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1060:18
        #9 0x805617047 in QCoreApplication::sendEvent(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1450:12
        #10 0x805617ccd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1799:9
        #11 0x805616f4e in QCoreApplication::sendPostedEvents(QObject*, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1653:5
        #12 0x8056c630d in postEventSourceDispatch(_GSource*, int (*)(void*), void*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qeventdispatcher_glib.cpp:276:5
        #13 0x80714d3b6 in g_main_context_dispatch (/usr/local/lib/libglib-2.0.so.0+0xce3b6)
        #14 0x80714d742  (/usr/local/lib/libglib-2.0.so.0+0xce742)
        #15 0x80714d7f3 in g_main_context_iteration (/usr/local/lib/libglib-2.0.so.0+0xce7f3)
        #16 0x8056c5484 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qeventdispatcher_glib.cpp:422:19
        #17 0x805616ba0 in QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1308:42
        #18 0x8056bb7ff in QTest::qWait(int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qtestsupport_core.cpp:104:9
        #19 0x8004018dc in KDevelop::TestCore::shutdown() /home/arr/projects/kdevelop/kdevplatform/tests/testcore.cpp:94:9
        #20 0x3099a0 in TestCMakeManager::cleanupTestCase() /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:55:5
        #21 0x302e5c in TestCMakeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/plugins/cmake/tests/test_cmakemanager_autogen/EWIEGA46WW/moc_test_cmakemanager.cpp:136:21
        #22 0x805625ed8 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qmetaobject.cpp:2295:13
        #23 0x800495a9b  (/usr/local/lib/qt5/libQt5Test.so.5+0x1ea9b)
        #24 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
        #25 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
        #26 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
        #27 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
    
    0x604000443b60 is located 16 bytes inside of 40-byte region [0x604000443b50,0x604000443b78)
    freed by thread T0 here:
        #0 0x301822 in operator delete(void*) /usr/src/contrib/compiler-rt/lib/asan/asan_new_delete.cc:167:3
        #1 0x8009e5b41 in KDevelop::ProjectProgress::~ProjectProgress() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:108:1
        #2 0x8009e6c22 in KDevelop::Project::~Project() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:466:5
        #3 0x8009e6c68 in KDevelop::Project::~Project() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:465:1
        #4 0x80566861a in qDeleteInEventHandler(QObject*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:4647:5
        #5 0x8056681d1 in QObject::event(QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:1251:9
        #6 0x8043184de in QApplicationPrivate::notify_helper(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3736:37
        #7 0x80431a59b in QApplication::notify(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3093:18
        #8 0x80561640d in QCoreApplication::notifyInternal2(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1060:18
        #9 0x805617047 in QCoreApplication::sendEvent(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1450:12
        #10 0x805617ccd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1799:9
        #11 0x805616f4e in QCoreApplication::sendPostedEvents(QObject*, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1653:5
        #12 0x800494375  (/usr/local/lib/qt5/libQt5Test.so.5+0x1d375)
        #13 0x800494be5  (/usr/local/lib/qt5/libQt5Test.so.5+0x1dbe5)
        #14 0x800495976  (/usr/local/lib/qt5/libQt5Test.so.5+0x1e976)
        #15 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
        #16 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
        #17 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
        #18 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
        #19 0x8003a0fff  (<unknown module>)
    
    previously allocated by thread T0 here:
        #0 0x300be2 in operator new(unsigned long) /usr/src/contrib/compiler-rt/lib/asan/asan_new_delete.cc:106:3
        #1 0x8009e6889 in KDevelop::Project::Project(QObject*) /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:460:19
        #2 0x800998238 in KDevelop::ProjectControllerPrivate::importProject(QUrl const&) /home/arr/projects/kdevelop/kdevplatform/shell/projectcontroller.cpp:345:29
        #3 0x8009813d2 in KDevelop::ProjectController::openProject(QUrl const&) /home/arr/projects/kdevelop/kdevplatform/shell/projectcontroller.cpp:879:12
        #4 0x308439 in loadProject(QString const&, QString const&) /home/arr/projects/kdevelop/plugins/cmake/tests/testhelpers.h:138:51
        #5 0x31b1d2 in TestCMakeManager::testReload() /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:338:25
        #6 0x302f3c in TestCMakeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/plugins/cmake/tests/test_cmakemanager_autogen/EWIEGA46WW/moc_test_cmakemanager.cpp:152:22
        #7 0x805625ed8 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qmetaobject.cpp:2295:13
        #8 0x800494242  (/usr/local/lib/qt5/libQt5Test.so.5+0x1d242)
        #9 0x800494be5  (/usr/local/lib/qt5/libQt5Test.so.5+0x1dbe5)
        #10 0x800495976  (/usr/local/lib/qt5/libQt5Test.so.5+0x1e976)
        #11 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
        #12 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
        #13 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
        #14 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
        #15 0x8003a0fff  (<unknown module>)
    
    SUMMARY: AddressSanitizer: heap-use-after-free /home/arr/projects/kdevelop/kdevplatform/shell/statusbar.cpp:243:56 in KDevelop::StatusBar::showProgress(KDevelop::IStatus*, int, int, int)

REPOSITORY
  R32 KDevelop

CHANGES SINCE LAST UPDATE
  https://phabricator.kde.org/D18758?vs=50948&id=58398

BRANCH
  asan_fix

REVISION DETAIL
  https://phabricator.kde.org/D18758

AFFECTED FILES
  kdevplatform/3rdparty/CMakeLists.txt
  kdevplatform/3rdparty/qtpromise/CMakeLists.txt
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.appveyor.yml
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.gitignore
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.travis.yml
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/LICENSE
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/README.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/config.js
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/override.styl
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/public/favicon.ico
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/public/favicon.png
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/style.styl
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/README.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/api-reference.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/canceled.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/context.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/timeout.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/undefined.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/getting-started.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/all.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/attempt.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/connect.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/each.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/filter.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/map.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/reduce.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/resolve.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/all.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/constructor.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/delay.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/each.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/fail.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/filter.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/finally.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/isfulfilled.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/ispending.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/isrejected.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/map.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/reduce.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/reject.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/resolve.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/tap.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/tapfail.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/then.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/timeout.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/wait.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qtconcurrent.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qtsignals.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/thread-safety.md
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/include/QtPromise
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/package/features/qtpromise.prf
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qpm.json
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qtpromise.pri
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qtpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise.inl
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise_p.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseconnections.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseexceptions.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisefuture.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseglobal.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisehelpers.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisehelpers_p.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseresolver.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qtpromise.pri
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qtpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/src.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/auto.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/benchmark/benchmark.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/benchmark/tst_benchmark.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/deprecations.pri
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/deprecations.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/helpers.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromise/qpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromise/tst_qpromise.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromiseall/qpromiseall.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromiseall/tst_qpromiseall.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/all/all.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/all/tst_all.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/qpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/exceptions/exceptions.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/exceptions/tst_exceptions.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/future/future.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/future/tst_future.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/all/all.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/all/tst_all.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/attempt/attempt.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/attempt/tst_attempt.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/connect/connect.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/connect/tst_connect.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/each/each.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/each/tst_each.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/filter/filter.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/filter/tst_filter.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/helpers.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/map/map.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/map/tst_map.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reduce/reduce.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reduce/tst_reduce.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reject/reject.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reject/tst_reject.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/resolve/resolve.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/resolve/tst_resolve.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/construct/construct.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/construct/tst_construct.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/delay/delay.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/delay/tst_delay.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/each/each.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/each/tst_each.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/fail/fail.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/fail/tst_fail.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/filter/filter.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/filter/tst_filter.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/finally/finally.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/finally/tst_finally.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/map/map.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/map/tst_map.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/operators/operators.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/operators/tst_operators.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/qpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/reduce/reduce.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/reduce/tst_reduce.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/resolve/resolve.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/resolve/tst_resolve.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tap/tap.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tap/tst_tap.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tapfail/tapfail.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tapfail/tst_tapfail.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/then/then.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/then/tst_then.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/timeout/timeout.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/timeout/tst_timeout.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromiseconnections/qpromiseconnections.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromiseconnections/tst_qpromiseconnections.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qtpromise.pri
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qtpromise.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/requirements/requirements.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/requirements/tst_requirements.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/data.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/object.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/utils.h
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/thread/thread.pro
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/thread/tst_thread.cpp
  kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/tests.pro
  kdevplatform/CMakeLists.txt
  kdevplatform/shell/CMakeLists.txt
  kdevplatform/shell/project.cpp
  kdevplatform/shell/project.h
  kdevplatform/shell/projectcontroller.cpp
  kdevplatform/shell/tests/CMakeLists.txt

To: arrowd, #kdevelop, mwolff
Cc: apol, kfunk, brauch, mwolff, kdevelop-devel, christiant, glebaccon, domson, antismap, iodelay, alexeymin, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20190521/46666104/attachment-0001.html>


More information about the KDevelop-devel mailing list