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