Details
-
Bug
-
Resolution: Fixed
-
Not Evaluated
-
Qt Creator 13.0.0-beta1
-
None
-
-
f7b1eed0c (master)
Description
After session switch (containing Creator project), Creator crashes with the following output:
terminate called after throwing an instance of 'std::system_error'
what(): Resource deadlock avoided
Aborted (core dumped)
Call stack:
Thread 1 (Thread 0x7f7927033900 (LWP 90598)): #0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140158322292992) at ./nptl/pthread_kill.c:44 #1 __pthread_kill_internal (signo=6, threadid=140158322292992) at ./nptl/pthread_kill.c:78 #2 __GI___pthread_kill (threadid=140158322292992, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3 0x00007f7926a42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4 0x00007f7926a287f3 in __GI_abort () at ./stdlib/abort.c:79 #5 0x00007f7926ea2b9e in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 #6 0x00007f7926eae20c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 #7 0x00007f7926eae277 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6 #8 0x00007f7926eae4d8 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6 #9 0x00007f7926ea583c in std::__throw_system_error(int) () from /lib/x86_64-linux-gnu/libstdc++.so.6 #10 0x00007f78b4e2f403 in std::__shared_mutex_pthread::lock_shared (this=0x563b7de3db40) at /usr/include/c++/11/shared_mutex:232 #11 0x00007f78b4e2f482 in std::shared_mutex::lock_shared (this=0x563b7de3db40) at /usr/include/c++/11/shared_mutex:426 #12 0x00007f78b4e3bd17 in std::shared_lock<std::shared_mutex>::shared_lock (this=0x7ffcb9886c60, __m=...) at /usr/include/c++/11/shared_mutex:727 #13 0x00007f78b4e3a1f9 in Utils::SynchronizedValue<QmlJS::ModelManagerInterface::SyncedData>::shared_lock::shared_lock (this=0x7ffcb9886c60, value_=..., mutex=...) at /home/jarek/dev/creator-master/src/libs/utils/synchronizedvalue.h:91 #14 0x00007f78b4e33c63 in Utils::SynchronizedValue<QmlJS::ModelManagerInterface::SyncedData>::readLocked (this=0x563b7de3db40) at /home/jarek/dev/creator-master/src/libs/utils/synchronizedvalue.h:171 #15 0x00007f78b4e1b15d in QmlJS::ModelManagerInterface::snapshot (this=0x563b7de3db30) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:318 #16 0x00007f78b4e6ba95 in QmlJS::PluginDumper::onLoadPluginTypes (this=0x563b7de3f980, libraryPath=..., importPath=..., importUri=..., importVersion=...) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsplugindumper.cpp:105 #17 0x00007f78b4e6b26e in operator() (__closure=0x563b824eadf0) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsplugindumper.cpp:58 #18 0x00007f78b4e75ffb in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, QmlJS::PluginDumper::loadPluginTypes(const Utils::FilePath&, const Utils::FilePath&, const QString&, const QString&)::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x7ffcb9887198) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:129 #19 0x00007f78b4e758a5 in QtPrivate::Functor<QmlJS::PluginDumper::loadPluginTypes(const Utils::FilePath&, const Utils::FilePath&, const QString&, const QString&)::<lambda()>, 0>::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffcb9887198) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:243 #20 0x00007f78b4e74dda in QtPrivate::QFunctorSlotObject<QmlJS::PluginDumper::loadPluginTypes(const Utils::FilePath&, const Utils::FilePath&, const QString&, const QString&)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x563b824eade0, r=0x563b7de3f980, a=0x7ffcb9887198, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:457 #21 0x00007f792739dc13 in QtPrivate::QSlotObjectBase::call (this=0x563b824eade0, r=0x563b7de3f980, a=0x7ffcb9887198) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:374 #22 0x00007f7927396e4f in QMetaObject::invokeMethodImpl (object=0x563b7de3f980, slotObj=0x563b824eade0, type=Qt::DirectConnection, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qmetaobject.cpp:1609 #23 0x00007f78b4e72693 in QMetaObject::invokeMethod<QmlJS::PluginDumper::loadPluginTypes(const Utils::FilePath&, const Utils::FilePath&, const QString&, const QString&)::<lambda()> >(QObject *, struct {...}, Qt::ConnectionType, void *) (context=0x563b7de3f980, function=..., type=Qt::AutoConnection, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs.h:468 #24 0x00007f78b4e6b3b4 in QmlJS::PluginDumper::loadPluginTypes (this=0x563b7de3f980, libraryPath=..., importPath=..., importUri=..., importVersion=...) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsplugindumper.cpp:58 #25 0x00007f78b4e23ea6 in QmlJS::ModelManagerInterface::loadPluginTypes (this=0x563b7de3db30, libraryPath=..., importPath=..., importUri=..., importVersion=...) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:1383 #26 0x00007f78b4e20021 in QmlJS::ModelManagerInterface::findNewQmlLibraryInPath (path=..., snapshot=..., modelManager=0x563b7de3db30, importedFiles=0x7ffcb9887c60, scannedPaths=0x7ffcb9887920, newLibraries=0x7ffcb9887928, ignoreMissing=false, lockedData=0x563b7de3db78) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:911 #27 0x00007f78b4e208f9 in QmlJS::ModelManagerInterface::findNewLibraryImports (doc=..., snapshot=..., modelManager=0x563b7de3db30, importedFiles=0x7ffcb9887c60, scannedPaths=0x7ffcb9887920, newLibraries=0x7ffcb9887928, lockedData=0x563b7de3db78) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:973 #28 0x00007f78b4e23888 in operator() (__closure=0x563b84e16c10, sd=...) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:1354 #29 0x00007f78b4e2da41 in std::__invoke_impl<bool, QmlJS::ModelManagerInterface::updateImportPaths()::<lambda(QmlJS::ModelManagerInterface::SyncedData&)>&, QmlJS::ModelManagerInterface::SyncedData&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #30 0x00007f78b4e2c1f5 in std::__invoke_r<bool, QmlJS::ModelManagerInterface::updateImportPaths()::<lambda(QmlJS::ModelManagerInterface::SyncedData&)>&, QmlJS::ModelManagerInterface::SyncedData&>(struct {...} &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:114 #31 0x00007f78b4e2a09a in std::_Function_handler<bool(QmlJS::ModelManagerInterface::SyncedData&), QmlJS::ModelManagerInterface::updateImportPaths()::<lambda(QmlJS::ModelManagerInterface::SyncedData&)> >::_M_invoke(const std::_Any_data &, QmlJS::ModelManagerInterface::SyncedData &) (__functor=..., __args#0=...) at /usr/include/c++/11/bits/std_function.h:290 #32 0x00007f78b4e3a51b in std::function<bool (QmlJS::ModelManagerInterface::SyncedData&)>::operator()(QmlJS::ModelManagerInterface::SyncedData&) const (this=0x7ffcb9887ca0, __args#0=...) at /usr/include/c++/11/bits/std_function.h:590 #33 0x00007f78b4e3423e in Utils::SynchronizedValue<QmlJS::ModelManagerInterface::SyncedData>::update<bool>(std::function<bool (QmlJS::ModelManagerInterface::SyncedData&)> const&) (this=0x563b7de3db40, func=...) at /home/jarek/dev/creator-master/src/libs/utils/synchronizedvalue.h:216 #34 0x00007f78b4e23d72 in QmlJS::ModelManagerInterface::updateImportPaths (this=0x563b7de3db30) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:1296 #35 0x00007f78b4e1d3d4 in QmlJS::ModelManagerInterface::updateProjectInfo (this=0x563b7de3db30, pinfo=..., p=0x563b856bb770) at /home/jarek/dev/creator-master/src/libs/qmljs/qmljsmodelmanagerinterface.cpp:589 #36 0x00007f78ab2efa1d in CMakeProjectManager::Internal::CMakeBuildSystem::updateQmlJSCodeModel (this=0x563b87d61d20, extraHeaderPaths=..., moduleMappings=...) at /home/jarek/dev/creator-master/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp:1861 #37 0x00007f78ab2e799a in CMakeProjectManager::Internal::CMakeBuildSystem::updateProjectData (this=0x563b87d61d20) at /home/jarek/dev/creator-master/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp:1112 #38 0x00007f78ab2e5dc5 in CMakeProjectManager::Internal::CMakeBuildSystem::combineScanAndParse (this=0x563b87d61d20, restoredFromBackup=false) at /home/jarek/dev/creator-master/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp:925 #39 0x00007f78ab2e910c in CMakeProjectManager::Internal::CMakeBuildSystem::handleParsingSucceeded (this=0x563b87d61d20, restoredFromBackup=false) at /home/jarek/dev/creator-master/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp:1232 #40 0x00007f78ab323775 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<bool>, void, void (CMakeProjectManager::Internal::CMakeBuildSystem::*)(bool)>::call (f=(void (CMakeProjectManager::Internal::CMakeBuildSystem::*)(CMakeProjectManager::Internal::CMakeBuildSystem * const, bool)) 0x7f78ab2e8d70 <CMakeProjectManager::Internal::CMakeBuildSystem::handleParsingSucceeded(bool)>, o=0x563b87d61d20, arg=0x7ffcb9888d20) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:137 #41 0x00007f78ab31aadf in QtPrivate::FunctionPointer<void (CMakeProjectManager::Internal::CMakeBuildSystem::*)(bool)>::call<QtPrivate::List<bool>, void> (f=(void (CMakeProjectManager::Internal::CMakeBuildSystem::*)(CMakeProjectManager::Internal::CMakeBuildSystem * const, bool)) 0x7f78ab2e8d70 <CMakeProjectManager::Internal::CMakeBuildSystem::handleParsingSucceeded(bool)>, o=0x563b87d61d20, arg=0x7ffcb9888d20) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:174 #42 0x00007f78ab3128bb in QtPrivate::QSlotObject<void (CMakeProjectManager::Internal::CMakeBuildSystem::*)(bool), QtPrivate::List<bool>, void>::impl (which=1, this_=0x563b81d485e0, r=0x563b87d61d20, a=0x7ffcb9888d20, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:432 #43 0x00007f792739dc13 in QtPrivate::QSlotObjectBase::call (this=0x563b81d485e0, r=0x563b87d61d20, a=0x7ffcb9888d20) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:374 #44 0x00007f7927416714 in doActivate<false> (sender=0x563b87d61ff0, signal_index=4, argv=0x7ffcb9888d20) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4036 #45 0x00007f792740c6b9 in QMetaObject::activate (sender=0x563b87d61ff0, m=0x7f78ab66fe80 <CMakeProjectManager::Internal::FileApiReader::staticMetaObject>, local_signal_index=1, argv=0x7ffcb9888d20) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4096 #46 0x00007f78ab25fb63 in CMakeProjectManager::Internal::FileApiReader::dataAvailable (this=0x563b87d61ff0, _t1=false) at /home/jarek/dev/creator-master-build-65/src/plugins/cmakeprojectmanager/CMakeProjectManager_autogen/EWIEGA46WW/moc_fileapireader.cpp:242 #47 0x00007f78ab4c1798 in operator() (__closure=0x563b82c97140, value=std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData> (use count 2, weak count 0) = {...}) at /home/jarek/dev/creator-master/src/plugins/cmakeprojectmanager/fileapireader.cpp:292 #48 0x00007f78ab4c3657 in operator() (__closure=0x563b82c97140, index=0) at /home/jarek/dev/creator-master/src/libs/utils/async.h:78 #49 0x00007f78ab4c4be8 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, Utils::onResultReady<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)> >(const QFuture<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData> >&, QObject*, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)>)::<lambda(int)> >::call(struct {...} &, void **) (f=..., arg=0x7ffcb9889030) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:129 #50 0x00007f78ab4c47b5 in QtPrivate::Functor<Utils::onResultReady<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)> >(const QFuture<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData> >&, QObject*, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)>)::<lambda(int)>, 1>::call<QtPrivate::List<int>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffcb9889030) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:243 #51 0x00007f78ab4c4588 in QtPrivate::QFunctorSlotObject<Utils::onResultReady<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)> >(const QFuture<std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData> >&, QObject*, CMakeProjectManager::Internal::FileApiReader::endState(const Utils::FilePath&, bool)::<lambda(const std::shared_ptr<CMakeProjectManager::Internal::FileApiQtcData>&)>)::<lambda(int)>, 1, QtPrivate::List<int>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x563b82c97130, r=0x563b87d61ff0, a=0x7ffcb9889030, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:457 #52 0x00007f792739dc13 in QtPrivate::QSlotObjectBase::call (this=0x563b82c97130, r=0x563b87d61ff0, a=0x7ffcb9889030) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:374 #53 0x00007f7927416714 in doActivate<false> (sender=0x563b80e1b410, signal_index=10, argv=0x7ffcb9889030) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4036 #54 0x00007f792740c6b9 in QMetaObject::activate (sender=0x563b80e1b410, m=0x7f7927b6b540 <QFutureWatcherBase::staticMetaObject>, local_signal_index=7, argv=0x7ffcb9889030) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4096 #55 0x00007f79276517eb in QFutureWatcherBase::resultReadyAt (this=0x563b80e1b410, _t1=0) at /home/jarek/dev/qt-65-build/qtbase/src/corelib/Core_autogen/include/moc_qfuturewatcher.cpp:492 #56 0x00007f7927650cf6 in QFutureWatcherBasePrivate::sendCallOutEvent (this=0x563b7ddf38b0, event=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qfuturewatcher.cpp:536 #57 0x00007f79276504c9 in QFutureWatcherBase::event (this=0x563b80e1b410, event=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qfuturewatcher.cpp:392 #58 0x00007f79291a9d96 in QApplicationPrivate::notify_helper (this=0x563b7d1f9ac0, receiver=0x563b80e1b410, e=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:3290 #59 0x00007f79291a9b88 in QApplication::notify (this=0x563b7d210650, receiver=0x563b80e1b410, e=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:3241 #60 0x00007f792737a435 in QCoreApplication::notifyInternal2 (receiver=0x563b80e1b410, event=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1119 #61 0x00007f792737afd7 in QCoreApplication::sendEvent (receiver=0x563b80e1b410, event=0x7f7568799ba0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1537 #62 0x00007f792737bf2e in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x563b7d1fbd30) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1899 #63 0x00007f792737b7fc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1758 #64 0x00007f79277cdfd8 in postEventSourceDispatch (s=0x563b7d281b70) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:243 #65 0x00007f7926d1bd3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #66 0x00007f7926d71258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #67 0x00007f7926d193e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #68 0x00007f79277ce89a in QEventDispatcherGlib::processEvents (this=0x563b7d27a150, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:393 #69 0x00007f7922d1d22a in QXcbGlibEventDispatcher::processEvents (this=0x563b7d27a150, flags=...) at /home/jarek/dev/qt-65/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:96 #70 0x00007f792738e941 in QEventLoop::processEvents (this=0x7ffcb9889790, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventloop.cpp:100 #71 0x00007f792738ecb0 in QEventLoop::exec (this=0x7ffcb9889790, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventloop.cpp:182 #72 0x00007f792737ada0 in QCoreApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1440 #73 0x00007f79281e6146 in QGuiApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/gui/kernel/qguiapplication.cpp:1925 #74 0x00007f79291a6d83 in QApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:2569 #75 0x0000563b7cc1f813 in main (argc=1, argv=0x7ffcb9889ee8) at /home/jarek/dev/creator-master/src/app/main.cpp:843
Most probably introduced in: https://codereview.qt-project.org/c/qt-creator/qt-creator/+/516870.
Update: After bisecting it looks like the above change has introduced this regression.
Attachments
For Gerrit Dashboard: QTCREATORBUG-30016 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
523151,2 | QMLJS: Fix deadlock on session switch | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |