SUMMARY This deadlock is extremely easy to reproduce: start KDevelop and exit it as soon as possible => KDevelop fails to exit, i.e. the process remains running. I have reproduced it in Debug and Release KDevelop builds; with several small projects open, with an empty session and with a new empty session. For example, launch KDevelop with the following command: `kdevelop -n tmp` (or `kdevelop -s tmp` if the "tmp" session already exists). SOFTWARE/OS VERSIONS Manjaro GNU/Linux, Xfce KDE Frameworks Version: 5.73.0 Qt Version: 5.15.0 ADDITIONAL INFORMATION This deadlock is clearly an upstream issue: QTBUG-75777. When I apply the patch that fixes it (https://codereview.qt-project.org/c/qt/qtdeclarative/+/263540), the deadlock doesn't happen. When I run the following command while KDevelop process is deadlocked (replace "123456" with the kdevelop process ID): gdb -batch -ex "thread apply all bt" -ex "quit" -p 123456 > kdevelop-deadlock.bt I always get a backtrace very similar to the one pasted below. When I run the same gdb command a few seconds, minutes or even an hour later for the same deadlocked process, I get exactly the same backtrace. BACKTRACE (with debugging symbols for KDevelop, qtbase and qtdeclarative) [New LWP 463276] [New LWP 463277] [New LWP 463278] [New LWP 463279] [New LWP 463280] [New LWP 463281] [New LWP 463282] [New LWP 463283] [New LWP 463284] [New LWP 463285] [New LWP 463286] [New LWP 463287] [New LWP 463293] [New LWP 463294] [New LWP 463295] [New LWP 463296] [New LWP 463297] [New LWP 463298] [New LWP 463299] [New LWP 463300] [New LWP 463302] [New LWP 463306] [New LWP 463308] [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0 Thread 24 (Thread 0x7f6074bd3640 (LWP 463308)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f605c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f6074bd2880, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #5 0x00007f60e56acc32 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #6 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x7f60e82b28e8 <KDevelop::(anonymous namespace)::Q_QGS_s_parsingThread::innerFunction()::holder+8>) at thread/qthread_unix.cpp:342 #7 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #8 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 23 (Thread 0x7f60755fa640 (LWP 463306)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f6068000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f60755f9880, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #5 0x00007f60e56acc32 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #6 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c9960f0) at thread/qthread_unix.cpp:342 #7 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #8 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 22 (Thread 0x7f60777fe640 (LWP 463302)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e84 in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55db3c87ff00) at thread/qwaitcondition_unix.cpp:146 #2 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x55db3c87fe58, mutex=mutex@entry=0x55db3c87fe50, deadline=...) at thread/qwaitcondition_unix.cpp:225 #3 0x00007f60e76a200b in QQmlThreadPrivate::wait() (this=0x55db3c87fde0) at /usr/include/qt/QtCore/qdeadlinetimer.h:68 #4 QQmlThread::internalCallMethodInMain(QQmlThread::Message*) (this=0x55db3c87fc80, message=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/ftw/qqmlthread.cpp:390 #5 0x00007f60e7652231 in QQmlImportDatabase::finalizePlugin(QObject*, QString const&, QString const&) (this=this@entry=0x55db3c87f8b8, instance=instance@entry=0x7f60640e24c0, path=..., uri=...) at /usr/include/qt/QtCore/qarraydata.h:208 #6 0x00007f60e7652b37 in QQmlImportDatabase::importDynamicPlugin(QString const&, QString const&, QString const&, int, QList<QQmlError>*) (this=0x55db3c87f8b8, filePath=..., uri=..., typeNamespace=..., vmaj=<optimized out>, errors=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlimport.cpp:2294 #7 0x00007f60e7653a8e in QQmlImportsPrivate::importExtension(QString const&, QString const&, int, int, QQmlImportDatabase*, QQmlTypeLoaderQmldirContent const&, QList<QQmlError>*) (this=this@entry=0x7f60640e01c0, qmldirFilePath=..., uri=..., vmaj=vmaj@entry=1, vmin=vmin@entry=4, database=database@entry=0x55db3c87f8b8, qmldir=..., errors=0x7f60777fceb0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlimport.cpp:1221 #8 0x00007f60e765490e in QQmlImportsPrivate::addLibraryImport(QString const&, QString const&, int, int, QString const&, QString const&, bool, QQmlImportDatabase*, QList<QQmlError>*) (this=0x7f60640e01c0, uri=..., prefix=..., vmaj=1, vmin=4, qmldirIdentifier=..., qmldirUrl=..., incomplete=false, database=0x55db3c87f8b8, errors=0x7f60777fceb0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlimport.cpp:1571 #9 0x00007f60e7654afe in QQmlImports::addLibraryImport(QQmlImportDatabase*, QString const&, QString const&, int, int, QString const&, QString const&, bool, QList<QQmlError>*) (this=0x55db3c87f8b8, this@entry=0x7f60640db418, importDb=0x7f60640e1420, importDb@entry=0x55db3c87f8b8, uri=..., prefix=..., vmaj=<optimized out>, vmin=<optimized out>, qmldirIdentifier=..., qmldirUrl=..., incomplete=<optimized out>, errors=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlimport.cpp:1830 #10 0x00007f60e76323ca in QQmlTypeLoader::Blob::addImport(std::shared_ptr<QQmlTypeLoader::Blob::PendingImport>, QList<QQmlError>*) (this=this@entry=0x7f60640db3b0, import=std::shared_ptr<QQmlTypeLoader::Blob::PendingImport> (use count 1, weak count 0) = {...}, errors=errors@entry=0x7f60777fceb0) at /usr/include/c++/10.2.0/bits/shared_ptr_base.h:1324 #11 0x00007f60e7632c66 in QQmlTypeLoader::Blob::addImport(QV4::CompiledData::Import const*, QList<QQmlError>*) (this=this@entry=0x7f60640db3b0, import=import@entry=0x7f6088004e08, errors=errors@entry=0x7f60777fceb0) at /usr/include/c++/10.2.0/ext/new_allocator.h:89 #12 0x00007f60e75df131 in QQmlTypeData::tryLoadFromDiskCache() (this=this@entry=0x7f60640db3b0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypedata.cpp:202 #13 0x00007f60e75e3bc1 in QQmlTypeData::dataReceived(QQmlDataBlob::SourceCodeData const&) (this=0x7f60640db3b0, data=...) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypedata.cpp:582 #14 0x00007f60e762ca48 in QQmlTypeLoader::setData(QQmlDataBlob*, QQmlDataBlob::SourceCodeData const&) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x7f60640db3b0, d=...) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:447 #15 0x00007f60e762d176 in QQmlTypeLoader::setData(QQmlDataBlob*, QString const&) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x7f60640db3b0, fileName=...) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:437 #16 0x00007f60e762df32 in QQmlTypeLoader::loadThread(QQmlDataBlob*) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x7f60640db3b0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:299 #17 0x00007f60e762e2f6 in PlainLoader::loadThread(QQmlTypeLoader*, QQmlDataBlob*) const (blob=0x7f60640db3b0, loader=0x55db3c87f908, this=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:146 #18 QQmlTypeLoader::doLoad<PlainLoader>(PlainLoader const&, QQmlDataBlob*, QQmlTypeLoader::Mode) (loader=..., mode=QQmlTypeLoader::PreferSynchronous, blob=0x7f60640db3b0, this=0x55db3c87f908) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:205 #19 QQmlTypeLoader::load(QQmlDataBlob*, QQmlTypeLoader::Mode) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x7f60640db3b0, mode=mode@entry=QQmlTypeLoader::PreferSynchronous) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:237 #20 0x00007f60e762eaf9 in QQmlTypeLoader::getType(QUrl const&, QQmlTypeLoader::Mode) (this=this@entry=0x55db3c87f908, unNormalizedUrl=..., mode=mode@entry=QQmlTypeLoader::PreferSynchronous) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:825 #21 0x00007f60e75e1258 in QQmlTypeData::resolveTypes() (this=this@entry=0x55db3c7dc6d0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/include/QtQml/5.15.0/QtQml/private/../../../../../src/qml/qml/qqmldatablob_p.h:95 #22 0x00007f60e75e3fdd in QQmlTypeData::allDependenciesDone() (this=0x55db3c7dc6d0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypedata.cpp:745 #23 0x00007f60e762cd13 in QQmlTypeLoader::setData(QQmlDataBlob*, QQmlDataBlob::SourceCodeData const&) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x55db3c7dc6d0, d=...) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:450 #24 0x00007f60e762d176 in QQmlTypeLoader::setData(QQmlDataBlob*, QString const&) (this=this@entry=0x55db3c87f908, blob=blob@entry=0x55db3c7dc6d0, fileName=...) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:437 #25 0x00007f60e762df32 in QQmlTypeLoader::loadThread(QQmlDataBlob*) (this=0x55db3c87f908, blob=blob@entry=0x55db3c7dc6d0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:299 #26 0x00007f60e75ebcbe in QQmlTypeLoaderThread::loadThread(QQmlDataBlob*) (this=<optimized out>, b=0x55db3c7dc6d0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloaderthread.cpp:162 #27 0x00007f60e76a1aea in QQmlThreadPrivate::threadEvent() (this=this@entry=0x55db3c87fde0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/ftw/qqmlthread.cpp:204 #28 0x00007f60e76a2352 in QQmlThreadPrivate::event(QEvent*) (this=0x55db3c87fde0, e=0x55db3c74d4c0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/ftw/qqmlthread.cpp:142 #29 0x00007f60e671d702 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55db3c87fde0, e=0x55db3c74d4c0) at kernel/qapplication.cpp:3671 #30 0x00007f60e58927ba in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55db3c87fde0, event=0x55db3c74d4c0) at ../../include/QtCore/5.15.0/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325 #31 0x00007f60e58952a3 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55db3c87b7d0) at kernel/qcoreapplication.cpp:1815 #32 0x00007f60e58ebcf4 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x7f6064001540) at kernel/qeventdispatcher_glib.cpp:277 #33 0x00007f60e1c4643c in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0 #34 0x00007f60e1c941d9 in () at /usr/lib/libglib-2.0.so.0 #35 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #36 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f6064000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #37 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f60777fd860, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #38 0x00007f60e56acc32 in QThread::exec() (this=this@entry=0x55db3c87fde0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #39 0x00007f60e76a1789 in QQmlThreadPrivate::run() (this=0x55db3c87fde0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/ftw/qqmlthread.cpp:155 #40 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c87fde0) at thread/qthread_unix.cpp:342 #41 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #42 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 21 (Thread 0x7f6077fff640 (LWP 463300)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f606c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f6077ffe810, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #5 0x00007f60e56acc32 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #6 0x00007f60e84c48a3 in KDevelop::DUChainPrivate::CleanupThread::run() (this=0x55db3c857830) at ../kdevplatform/language/duchain/duchain.cpp:331 #7 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c857830) at thread/qthread_unix.cpp:342 #8 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #9 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 20 (Thread 0x7f6089bfd640 (LWP 463299)): #0 0x00007f60e47069c8 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e08 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (deadline=..., this=0x55db3c742f70) at thread/qwaitcondition_unix.cpp:136 #2 QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55db3c742f70) at thread/qwaitcondition_unix.cpp:144 #3 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x55db3c73cf70, mutex=mutex@entry=0x55db3c20fdf8, deadline=...) at thread/qwaitcondition_unix.cpp:225 #4 0x00007f60e56b2084 in QThreadPoolThread::run() (this=0x55db3c73cf60) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270 #5 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c73cf60) at thread/qthread_unix.cpp:342 #6 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #7 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 19 (Thread 0x7f608a3fe640 (LWP 463298)): #0 0x00007f60e47069c8 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e08 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (deadline=..., this=0x55db3c6c98e0) at thread/qwaitcondition_unix.cpp:136 #2 QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55db3c6c98e0) at thread/qwaitcondition_unix.cpp:144 #3 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x55db3c73ceb0, mutex=mutex@entry=0x55db3c20fdf8, deadline=...) at thread/qwaitcondition_unix.cpp:225 #4 0x00007f60e56b2084 in QThreadPoolThread::run() (this=0x55db3c73cea0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270 #5 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c73cea0) at thread/qthread_unix.cpp:342 #6 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #7 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 18 (Thread 0x7f608abff640 (LWP 463297)): #0 0x00007f60e47069c8 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e08 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (deadline=..., this=0x7f608c00e390) at thread/qwaitcondition_unix.cpp:136 #2 QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x7f608c00e390) at thread/qwaitcondition_unix.cpp:144 #3 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x55db3c73cf10, mutex=mutex@entry=0x55db3c20fdf8, deadline=...) at thread/qwaitcondition_unix.cpp:225 #4 0x00007f60e56b2084 in QThreadPoolThread::run() (this=0x55db3c73cf00) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270 #5 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c73cf00) at thread/qthread_unix.cpp:342 #6 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #7 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 17 (Thread 0x7f608b400640 (LWP 463296)): #0 0x00007f60e47069c8 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e08 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (deadline=..., this=0x55db3c7402e0) at thread/qwaitcondition_unix.cpp:136 #2 QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55db3c7402e0) at thread/qwaitcondition_unix.cpp:144 #3 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=this@entry=0x55db3c73c6b0, mutex=mutex@entry=0x55db3c20fdf8, deadline=...) at thread/qwaitcondition_unix.cpp:225 #4 0x00007f60e56b2084 in QThreadPoolThread::run() (this=0x55db3c73c6a0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270 #5 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3c73c6a0) at thread/qthread_unix.cpp:342 #6 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #7 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 16 (Thread 0x7f60a495c640 (LWP 463295)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c44c03 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60d80991a8 in () at /usr/lib/libgio-2.0.so.0 #4 0x00007f60e1c6e511 in () at /usr/lib/libglib-2.0.so.0 #5 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #6 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 15 (Thread 0x7f60a515d640 (LWP 463294)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60e1c45272 in () at /usr/lib/libglib-2.0.so.0 #4 0x00007f60e1c6e511 in () at /usr/lib/libglib-2.0.so.0 #5 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #6 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 14 (Thread 0x7f60a63c9640 (LWP 463293)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e1c94168 in () at /usr/lib/libglib-2.0.so.0 #2 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #3 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f608c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f60a63c8830, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #5 0x00007f60e56acc32 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #6 0x00007f60e64c8098 in QDBusConnectionManager::run() (this=0x7f60e6536080 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179 #7 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x7f60e6536080 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:342 #8 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #9 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 13 (Thread 0x7f60a75fe640 (LWP 463287)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 12 (Thread 0x7f60a7fff640 (LWP 463286)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 11 (Thread 0x7f60c4be0640 (LWP 463285)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 10 (Thread 0x7f60c53e1640 (LWP 463284)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 9 (Thread 0x7f60c5be2640 (LWP 463283)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 8 (Thread 0x7f60c63e3640 (LWP 463282)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 7 (Thread 0x7f60c6be4640 (LWP 463281)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 6 (Thread 0x7f60d09a2640 (LWP 463280)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 5 (Thread 0x7f60d11a3640 (LWP 463279)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 4 (Thread 0x7f60d19a4640 (LWP 463278)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 3 (Thread 0x7f60d22fa640 (LWP 463277)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60d290490c in () at /usr/lib/dri/radeonsi_dri.so #2 0x00007f60d2903308 in () at /usr/lib/dri/radeonsi_dri.so #3 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #4 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 2 (Thread 0x7f60d46ff640 (LWP 463276)): #0 0x00007f60e51ca46f in poll () at /usr/lib/libc.so.6 #1 0x00007f60e44b163b in () at /usr/lib/libxcb.so.1 #2 0x00007f60e44b337b in xcb_wait_for_event () at /usr/lib/libxcb.so.1 #3 0x00007f60d4841c51 in QXcbEventQueue::run() (this=0x55db3bb74ef0) at qxcbeventqueue.cpp:228 #4 0x00007f60e56ade0f in QThreadPrivate::start(void*) (arg=0x55db3bb74ef0) at thread/qthread_unix.cpp:342 #5 0x00007f60e47003e9 in start_thread () at /usr/lib/libpthread.so.0 #6 0x00007f60e51d5293 in clone () at /usr/lib/libc.so.6 Thread 1 (Thread 0x7f60d4c441c0 (LWP 463275)): #0 0x00007f60e47066a2 in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0 #1 0x00007f60e56b3e84 in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., deadline=..., this=0x55db3c87ff00) at thread/qwaitcondition_unix.cpp:146 #2 QWaitCondition::wait(QMutex*, QDeadlineTimer) (this=<optimized out>, mutex=0x55db3c87fe50, deadline=...) at thread/qwaitcondition_unix.cpp:225 #3 0x00007f60e76a1cb9 in QQmlThreadPrivate::wait() (this=<optimized out>) at /usr/include/qt/QtCore/qdeadlinetimer.h:68 #4 QQmlThread::shutdown() (this=0x55db3c87fc80) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/ftw/qqmlthread.cpp:251 #5 0x00007f60e762dd6a in QQmlTypeLoader::invalidate() (this=this@entry=0x55db3c87f908) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmltypeloader.cpp:120 #6 0x00007f60e75fa221 in QQmlEngine::~QQmlEngine() (this=0x55db3c87f7b0, __in_chrg=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlengine.cpp:1029 #7 0x00007f60e75fa26a in QQmlEngine::~QQmlEngine() (this=0x55db3c87f7b0, __in_chrg=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.0/src/qml/qml/qqmlengine.cpp:1008 #8 0x00007f60e58bcd5e in QObjectPrivate::deleteChildren() (this=this@entry=0x55db3c4872b0) at kernel/qobject.cpp:2104 #9 0x00007f60e675a1ee in QWidget::~QWidget() (this=0x55db3c87b480, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1523 #10 0x00007f60a400a2a1 in WelcomePageWidget::~WelcomePageWidget() (this=0x55db3c87b480, __in_chrg=<optimized out>) at plugins/welcomepage/kdevwelcomepage_autogen/EWIEGA46WW/../../../../../plugins/welcomepage/welcomepageview.h:32 #11 0x00007f60a400a2c2 in WelcomePageWidget::~WelcomePageWidget() (this=0x55db3c87b480, __in_chrg=<optimized out>) at plugins/welcomepage/kdevwelcomepage_autogen/EWIEGA46WW/../../../../../plugins/welcomepage/welcomepageview.h:32 #12 0x00007f60e8329264 in Sublime::MainWindowPrivate::setBackgroundCentralWidget(QWidget*) (this=0x55db3bf4b010, w=0x0) at ../kdevplatform/sublime/mainwindow_p.cpp:286 #13 0x00007f60e83231dd in Sublime::MainWindow::setBackgroundCentralWidget(QWidget*) (this=0x55db3c1f1e40, w=0x0) at ../kdevplatform/sublime/mainwindow.cpp:494 #14 0x00007f60a400ac7a in KDevWelcomePagePlugin::unload() (this=0x55db3c878a60) at ../plugins/welcomepage/welcomepageplugin.cpp:65 #15 0x00007f60e9693dc2 in KDevelop::PluginController::unloadPlugin(KDevelop::IPlugin*, KDevelop::PluginController::PluginDeletion) (this=0x55db3c43a110, plugin=0x55db3c878a60, deletion=KDevelop::PluginController::Now) at ../kdevplatform/shell/plugincontroller.cpp:488 #16 0x00007f60e9692fbb in KDevelop::PluginController::cleanup() (this=0x55db3c43a110) at ../kdevplatform/shell/plugincontroller.cpp:384 #17 0x00007f60e96a51e5 in KDevelop::Core::cleanup() (this=0x55db3c193530) at ../kdevplatform/shell/core.cpp:409 #18 0x00007f60e96a4e7a in KDevelop::Core::shutdown() (this=0x55db3c193530) at ../kdevplatform/shell/core.cpp:360 #19 0x00007f60e967fa8f in KDevelop::MainWindow::~MainWindow() (this=0x55db3c1f1e40, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../kdevplatform/shell/mainwindow.cpp:150 #20 0x00007f60e967fb50 in KDevelop::MainWindow::~MainWindow() (this=0x55db3c1f1e40, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../kdevplatform/shell/mainwindow.cpp:154 #21 0x00007f60e58bef90 in QObject::event(QEvent*) (this=0x55db3c1f1e40, e=0x55db3cf3bea0) at kernel/qobject.cpp:1301 #22 0x00007f60e735ea8a in KXmlGuiWindow::event(QEvent*) () at /usr/lib/libKF5XmlGui.so.5 #23 0x00007f60e9680057 in KDevelop::MainWindow::event(QEvent*) (this=0x55db3c1f1e40, ev=0x55db3cf3bea0) at ../kdevplatform/shell/mainwindow.cpp:208 #24 0x00007f60e671d702 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55db3c1f1e40, e=0x55db3cf3bea0) at kernel/qapplication.cpp:3671 #25 0x00007f60e58927ba in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55db3c1f1e40, event=0x55db3cf3bea0) at ../../include/QtCore/5.15.0/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325 #26 0x00007f60e58952a3 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55db3bb5e090) at kernel/qcoreapplication.cpp:1815 #27 0x00007f60e58ebcf4 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55db3bc30990) at kernel/qeventdispatcher_glib.cpp:277 #28 0x00007f60e1c4643c in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0 #29 0x00007f60e1c941d9 in () at /usr/lib/libglib-2.0.so.0 #30 0x00007f60e1c45221 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #31 0x00007f60e58eb331 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55db3bb72870, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #32 0x00007f60e589113c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffd32d58150, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 #33 0x00007f60e58995c4 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #34 0x000055db3b70b81f in main(int, char**) (argc=3, argv=0x7ffd32d585c8) at ../app/main.cpp:850 A debugging session is active. Inferior 1 [process 463275] will be detached. Quit anyway? (y or n) [answered Y; input not from terminal] [Inferior 1 (process 463275) detached]
> I have reproduced it in Debug and Release KDevelop builds; with several small projects open, with an empty session and with a new empty session. Actually I probably made a mistake in this statement: the deadlock can be easily reproduced only with a (possibly new) empty session. I cannot reproduce it in a session with open projects. Not only projects, even files open in a session can make the deadlock more difficult to reproduce.
The fix was cherry-picked into Qt 5.15.2: https://codereview.qt-project.org/c/qt/qtdeclarative/+/312383. I have verified that this bug is not reproducible with Qt 5.15.2.