-
Igor Kushnir authored
When a user exits KDevelop while a CTestFindJob is still working, the job is killed from RunController::cleanup() and its KJob parent calls deleteLater(). But the killed job can be still not destroyed after DUChain::shutdown() is called, which results in a crash if CTestFindJob::updateReady() is then invoked via Qt::QueuedConnection. Note that ~ParseJob() queues calls to CTestFindJob::updateReady(), which can then be invoked after DUChain::shutdown(), if ParseJob-s are running when the user exits KDevelop and no event loop is entered in the time between the ~ParseJob() and DUChain::shutdown() calls (sometimes the optional QCoreApplication::processEvents() call in BackgroundParser::waitForIdle() intervenes and prevents the crash). Core::cleanup() calls backgroundParser()->waitForIdle(), which ensures that all parse jobs finish, are destroyed and queue "updateReady" calls. BUG: 423651 FIXED-IN: 5.6.1
ae9f45ae