-
Bug
-
Resolution: Cannot Reproduce
-
Not Evaluated
-
Qt Creator 4.3.0-beta1
-
None
-
macOS 10.11, Qt Creator master, XCode 7.3.1, Qt 5.6.2
While switching from default session to a custom pyside session, Qt Creator crash with the following backtrace:
Qt Creator 4.2.82, based on Qt 5.6.2 (64 bit) Kernel: darwin 15.5.0 OS: OS X El Capitan (10.11) (lldb) process attach --pid 68476 thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x00007fff99b7f582 libsystem_kernel.dylib`__wait4 + 10 frame #1: Qt Creator`::signalHandler(signal=<unavailable>) at crashhandlersetup.cpp:101 [opt] frame #2: 0x00007fff8692e52a libsystem_platform.dylib`_sigtramp + 26 frame #3: 0x000000010b47853a QtCore`operator<(QString const&, QString const&) + 10 frame #4: libCore.dylib`Core::VcsManagerPrivate::findInCache(QString const&) [inlined] bool qMapLessThanKey<QString>(key1=<unavailable>, key2=0x00007fff557dcc58) at qmap.h:68 [opt] frame #5: libCore.dylib`Core::VcsManagerPrivate::findInCache(QString const&) [inlined] QMapNode<QString, Core::VcsManagerPrivate::VcsInfo*>::lowerBound(QString const&) at qmap.h:153 [opt] frame #6: libCore.dylib`Core::VcsManagerPrivate::findInCache(QString const&) at qmap.h:283 [opt] frame #7: libCore.dylib`Core::VcsManagerPrivate::findInCache(QString const&) [inlined] QMap<QString, Core::VcsManagerPrivate::VcsInfo*>::constFind(QString const&) const at qmap.h:856 [opt] frame #8: libCore.dylib`Core::VcsManagerPrivate::findInCache(this=0x00007f818cb5e370, dir=0x00007fff557dcc58) at vcsmanager.cpp:94 [opt] frame #9: libCore.dylib`Core::VcsManager::findVersionControlForDirectory(inputDirectory=<unavailable>, topLevelDirectory=0x0000000000000000) at vcsmanager.cpp:261 [opt] frame #10: libProjectExplorer.dylib`ProjectExplorer::ProjectNode::vcsTopic(this=<unavailable>) const at projectnodes.cpp:765 [opt] frame #11: libProjectExplorer.dylib`ProjectExplorer::Internal::FlatModel::data(this=<unavailable>, index=<unavailable>, role=<unavailable>) const at projectmodels.cpp:156 [opt] frame #12: 0x000000010aa8fe35 QtWidgets`QStyledItemDelegate::initStyleOption(QStyleOptionViewItem*, QModelIndex const&) const + 1781 frame #13: 0x000000010aa90004 QtWidgets`QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const + 68 frame #14: libProjectExplorer.dylib`(anonymous namespace)::ProjectTreeItemDelegate::paint(this=<unavailable>, painter=<unavailable>, option=<unavailable>, index=<unavailable>) const at projecttreewidget.cpp:76 [opt] frame #15: 0x000000010aa43f10 QtWidgets`QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const + 3872 frame #16: 0x000000010aa41c01 QtWidgets`QTreeView::drawTree(QPainter*, QRegion const&) const + 1233 frame #17: 0x000000010aa41665 QtWidgets`QTreeView::paintEvent(QPaintEvent*) + 325 frame #18: 0x000000010a7c98fc QtWidgets`QWidget::event(QEvent*) + 2092 frame #19: 0x000000010a8c23ed QtWidgets`QFrame::event(QEvent*) + 45 frame #20: 0x000000010a954fa7 QtWidgets`QAbstractScrollArea::viewportEvent(QEvent*) + 135 frame #21: 0x000000010a9fd0b5 QtWidgets`QAbstractItemView::viewportEvent(QEvent*) + 1397 frame #22: 0x000000010aa413f5 QtWidgets`QTreeView::viewportEvent(QEvent*) + 517 frame #23: 0x000000010a955c44 QtWidgets`___lldb_unnamed_symbol2762$$QtWidgets + 36 frame #24: 0x000000010b5ae27b QtCore`QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 203 frame #25: 0x000000010a787a41 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 273 frame #26: 0x000000010a788fb8 QtWidgets`QApplication::notify(QObject*, QEvent*) + 504 frame #27: 0x000000010b5adfe4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164 frame #28: 0x000000010a7c3244 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3316 frame #29: 0x000000010a795db7 QtWidgets`___lldb_unnamed_symbol100$$QtWidgets + 5511 frame #30: 0x000000010a7c9b8e QtWidgets`QWidget::event(QEvent*) + 2750 frame #31: 0x000000010a8da1ea QtWidgets`QMainWindow::event(QEvent*) + 1546 frame #32: 0x000000010a787a56 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294 frame #33: 0x000000010a788fb8 QtWidgets`QApplication::notify(QObject*, QEvent*) + 504 frame #34: 0x000000010b5adfe4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164 frame #35: 0x000000010b5aed2b QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 875 frame #36: 0x000000010eb35aee libqcocoa.dylib`___lldb_unnamed_symbol455$$libqcocoa.dylib + 190 frame #37: 0x000000010eb35015 libqcocoa.dylib`___lldb_unnamed_symbol449$$libqcocoa.dylib + 1589 frame #38: libProjectExplorer.dylib`ProjectExplorer::SessionManager::loadSession(QString const&) [inlined] ProjectExplorer::SessionManagerPrivate::sessionLoadingProgress(this=<unavailable>) at session.cpp:1115 [opt] frame #39: libProjectExplorer.dylib`ProjectExplorer::SessionManager::loadSession(session=0x00007fff557ded10) at session.cpp:1061 [opt] frame #40: libProjectExplorer.dylib`ProjectExplorer::ProjectExplorerPluginPrivate::setSession(this=<unavailable>, action=<unavailable>) at projectexplorer.cpp:3373 [opt] frame #41: 0x000000010b5e3bce QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2430 frame #42: 0x000000010a780ec1 QtWidgets`___lldb_unnamed_symbol11$$QtWidgets + 1121 frame #43: 0x000000010b5e3e1c QtCore`QMetaObject::activate(QObject*, int, int, void**) + 3020 frame #44: 0x000000010a77e3b7 QtWidgets`QAction::activate(QAction::ActionEvent) + 263 frame #45: 0x000000010b5e3e1c QtCore`QMetaObject::activate(QObject*, int, int, void**) + 3020 frame #46: 0x000000010b5dc102 QtCore`QObject::event(QEvent*) + 146 frame #47: 0x000000010a787a56 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294 frame #48: 0x000000010a788fb8 QtWidgets`QApplication::notify(QObject*, QEvent*) + 504 frame #49: 0x000000010b5adfe4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164 frame #50: 0x000000010b5aed2b QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 875 frame #51: 0x000000010eb35aee libqcocoa.dylib`___lldb_unnamed_symbol455$$libqcocoa.dylib + 190 frame #52: 0x000000010eb363b1 libqcocoa.dylib`___lldb_unnamed_symbol467$$libqcocoa.dylib + 33 frame #53: 0x00007fff89b1f881 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 frame #54: 0x00007fff89afefbc CoreFoundation`__CFRunLoopDoSources0 + 556 frame #55: 0x00007fff89afe4df CoreFoundation`__CFRunLoopRun + 927 frame #56: 0x00007fff89afded8 CoreFoundation`CFRunLoopRunSpecific + 296 frame #57: 0x00007fff86d83935 HIToolbox`RunCurrentEventLoopInMode + 235 frame #58: 0x00007fff86d83677 HIToolbox`ReceiveNextEventCommon + 184 frame #59: 0x00007fff86d835af HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71 frame #60: 0x00007fff91828df6 AppKit`_DPSNextEvent + 1067 frame #61: 0x00007fff91828226 AppKit`-[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454 frame #62: 0x00007fff9181cd80 AppKit`-[NSApplication run] + 682 frame #63: 0x000000010eb35251 libqcocoa.dylib`___lldb_unnamed_symbol449$$libqcocoa.dylib + 2161 frame #64: 0x000000010b5aa1a1 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 417 frame #65: 0x000000010b5ae655 QtCore`QCoreApplication::exec() + 341 frame #66: Qt Creator`main(argc=<unavailable>, argv=<unavailable>) at main.cpp:529 [opt] frame #67: 0x000000010a422a74 Qt Creator`start + 52
Culprit looks like a possibly dangling map in the following code in src/plugins/coreplugin/vcsmanager.cpp:94
VcsInfo *findInCache(const QString &dir)
{
QTC_ASSERT(QDir(dir).isAbsolute(), return 0);
QTC_ASSERT(!dir.endsWith(QLatin1Char('/')), return 0);
QTC_ASSERT(QDir::fromNativeSeparators(dir) == dir, return 0);
const QMap<QString, VcsInfo *>::const_iterator it = m_cachedMatches.constFind(dir);
if (it != m_cachedMatches.constEnd())
return it.value();
return 0;
}