- Debug a program in Creator and let it stop at a breakpoint.
- Click into the stack trace view.
On the first click, usually everything seems correct, but after some dozens of fast clicks, Creator reliably crashes here.
The crash's core file shows me 44 threads. This is the part which looks suspicious to me:
3 QMetaObject::cast qobjectdefs.h 241 0x7b7aa3728d9b 4 qobject_cast<CppEditor::Internal::CppEditorDocument *> qobject.h 428 0x7b7aa3734b7b 5 CppEditor::BuiltinEditorDocumentProcessor::onParserFinished builtineditordocumentprocessor.cpp 273 0x7b7aa37316eb 6 QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul>, QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void, void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot)>::call(void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot), CppEditor::BuiltinEditorDocumentProcessor *, void * *)::{lambda()#1}::operator()() const qobjectdefs_impl.h 127 0x7b7aa373c51b 7 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul>, QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void, void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot)>::call(void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot), CppEditor::BuiltinEditorDocumentProcessor *, void * *)::{lambda()#1}>(void * *, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul>, QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void, void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot)>::call(void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot), CppEditor::BuiltinEditorDocumentProcessor *, void * *)::{lambda()#1}&&) qobjectdefs_impl.h 65 0x7b7aa373d65c 8 QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul, 1ul>, QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void, void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot)>::call qobjectdefs_impl.h 126 0x7b7aa373c602 9 QtPrivate::FunctionPointer<void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot)>::call<QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void> qobjectdefs_impl.h 174 0x7b7aa373a984 10 QtPrivate::QCallableObject<void (CppEditor::BuiltinEditorDocumentProcessor:: *)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot), QtPrivate::List<QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot>, void>::impl qobjectdefs_impl.h 545 0x7b7aa3738e5b
In void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document, CPlusPlus::Snapshot snapshot), Creator tries to cast a Core::IDocument * with its object's d-pointer being null:
for (Core::IDocument * const openDocument : openDocuments) { const auto cppEditorDoc = qobject_cast<Internal::CppEditorDocument *>(openDocument); // <-- this is the cast if (!cppEditorDoc) continue;