https://bugs.kde.org/show_bug.cgi?id=374734
Daniel Vrátil <dvra...@kde.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|CONFIRMED |RESOLVED Latest Commit|https://commits.kde.org/ako |https://commits.kde.org/ako |nadi/5219f770b998aad16a3d51 |nadi/1593c17da9cbdc1483541e |bbd4f4c7ceb8b143c9 |1e7d7630f3c91f8208 --- Comment #29 from Daniel Vrátil <dvra...@kde.org> --- Git commit 1593c17da9cbdc1483541e1e7d7630f3c91f8208 by Daniel Vrátil. Committed on 24/02/2017 at 16:22. Pushed by dvratil into branch 'Applications/16.12'. Fix crash when Connection is closed while ItemRetriever is running ItemRetriever::exec() runs a nested QEventLoop. If the parent Connection is terminated while the event loop is running, the delayed AkThread::quit() invocation is executed and the thread is destroyed, while technically there is still execution going on. To workaround that issue we don't destroy the thread in Connection::quit() if we detect a nested QEventLoop but instead we just notify the event loop to quit and destroy the thread later when execution returns back to ItemRetriever::slotNewData(). This fixes a crash in QPSQLQuery, which was dereferencing a QPSQLDriver after the driver has been deleted as the thread was destroyed and avoids more of random crashes due to the Connection being virtually deleted from its own nested event loop. FIXED-IN: 5.4.3 M +24 -1 src/server/connection.cpp M +3 -0 src/server/connection.h M +1 -0 src/server/storage/datastore.cpp M +2 -0 src/server/storage/itemretriever.cpp https://commits.kde.org/akonadi/1593c17da9cbdc1483541e1e7d7630f3c91f8208 -- You are receiving this mail because: You are watching all bug changes.