Details
-
Bug
-
Resolution: Fixed
-
Not Evaluated
-
Qt Creator 13.0.0
-
None
-
-
042d87a1e (13.0), e930b29d6 (13.0), 2cb18715e (13.0)
Description
Crashed thread:
Thread 1 (Thread 0x7f0581ffb640 (LWP 24427)): #0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=139661632583232) at ./nptl/pthread_kill.c:44 #1 __pthread_kill_internal (signo=6, threadid=139661632583232) at ./nptl/pthread_kill.c:78 #2 __GI___pthread_kill (threadid=139661632583232, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3 0x00007f077d842476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4 0x00007f077d8287f3 in __GI_abort () at ./stdlib/abort.c:79 #5 0x00007f077d889676 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f077d9dbb77 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #6 0x00007f077d8a0cfc in malloc_printerr (str=str@entry=0x7f077d9de838 "free(): corrupted unsorted chunks") at ./malloc/malloc.c:5664 #7 0x00007f077d8a2f16 in _int_free (av=0x7f0694000030, p=0x7f06949c2e20, have_lock=<optimized out>) at ./malloc/malloc.c:4630 #8 0x00007f077d8a5453 in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3391 #9 0x00007f075c5f1f78 in QHashPrivate::Span<QHashPrivate::Node<CPlusPlus::Class const*, QHashDummyValue> >::freeData (this=0x7f06942515b8) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qhash.h:274 #10 QHashPrivate::Span<QHashPrivate::Node<CPlusPlus::Class const*, QHashDummyValue> >::~Span (this=0x7f06942515b8, __in_chrg=<optimized out>) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qhash.h:263 #11 QHashPrivate::Data<QHashPrivate::Node<CPlusPlus::Class const*, QHashDummyValue> >::~Data (this=0x7f0695b2fa40, __in_chrg=<optimized out>) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qhash.h:764 #12 QHash<CPlusPlus::Class const*, QHashDummyValue>::~QHash (this=0x7f0695343a98, __in_chrg=<optimized out>) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qhash.h:849 #13 QHash<CPlusPlus::Class const*, QHashDummyValue>::~QHash (this=0x7f0695343a98, __in_chrg=<optimized out>) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qhash.h:843 #14 QSet<CPlusPlus::Class const*>::~QSet (this=0x7f0695343a98, __in_chrg=<optimized out>) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qset.h:17 #15 CPlusPlus::AlreadyConsideredClassContainer<CPlusPlus::Class>::~AlreadyConsideredClassContainer (this=0x7f0695343a98, __in_chrg=<optimized out>) at /home/jarek/dev/creator-13-work/src/libs/cplusplus/AlreadyConsideredClassContainer.h:13 #16 CPlusPlus::ClassOrNamespace::~ClassOrNamespace (this=0x7f0695343970, __in_chrg=<optimized out>) at /home/jarek/dev/creator-13-work/src/libs/cplusplus/LookupContext.cpp:598 #17 0x00007f075c5f20d0 in qDeleteAll<QList<CPlusPlus::ClassOrNamespace*>::const_iterator> (end=..., begin=...) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qalgorithms.h:23 #18 qDeleteAll<QList<CPlusPlus::ClassOrNamespace*> > (c=...) at /home/jarek/dev/qt-64/qtbase/src/corelib/tools/qalgorithms.h:31 #19 CPlusPlus::CreateBindings::~CreateBindings (this=0x7f0695d01890, __in_chrg=<optimized out>) at /home/jarek/dev/creator-13-work/src/libs/cplusplus/LookupContext.cpp:1641 #20 0x00007f075c5fd20a in CPlusPlus::CreateBindings::~CreateBindings (this=0x7f0695d01890, __in_chrg=<optimized out>) at /home/jarek/dev/creator-13-work/src/libs/cplusplus/LookupContext.cpp:1639 #21 std::_Sp_counted_ptr<CPlusPlus::CreateBindings*, (__gnu_cxx::_Lock_policy)2>::_M_dispose (this=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:348 #22 0x00007f073c712fea in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x7f0694531170) at /usr/include/c++/11/bits/shared_ptr_base.h:168 #23 0x00007f073c70ffc9 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7f0581ffa260, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:705 #24 0x00007f073c732124 in std::__shared_ptr<CPlusPlus::CreateBindings, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x7f0581ffa258, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:1154 #25 0x00007f073c732144 in std::shared_ptr<CPlusPlus::CreateBindings>::~shared_ptr (this=0x7f0581ffa258, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr.h:122 #26 0x00007f073c73231e in CPlusPlus::LookupContext::~LookupContext (this=0x7f0581ffa1f0, __in_chrg=<optimized out>) at /home/jarek/dev/creator-13-work/src/libs/cplusplus/LookupContext.h:261 #27 0x00007f073c7308e9 in CppEditor::(anonymous namespace)::FindUses::splitLocalUses (this=0x7f0581ffa340, uses=..., rangesForLocalVariableUnderCursor=0x7f0581ffa980, rangesForLocalUnusedVariables=0x7f0581ffa9a0) at /home/jarek/dev/creator-13-work/src/plugins/cppeditor/builtincursorinfo.cpp:205 #28 0x00007f073c7304e9 in CppEditor::(anonymous namespace)::FindUses::doFind (this=0x7f0581ffa340) at /home/jarek/dev/creator-13-work/src/plugins/cppeditor/builtincursorinfo.cpp:165 #29 0x00007f073c73035d in CppEditor::(anonymous namespace)::FindUses::find (document=..., snapshot=..., line=3162, column=38, scope=0x0, expression=...) at /home/jarek/dev/creator-13-work/src/plugins/cppeditor/builtincursorinfo.cpp:142 #30 0x00007f073c739686 in std::__invoke_impl<CppEditor::CursorInfo, CppEditor::CursorInfo (*&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>&, CPlusPlus::Snapshot&, int&, int&, CPlusPlus::Scope*&, QString&> (__f=@0x7f0581ffa648: 0x7f073c730285 <CppEditor::(anonymous namespace)::FindUses::find(CPlusPlus::Document::Ptr, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&)>) at /usr/include/c++/11/bits/invoke.h:61 #31 0x00007f073c7391d4 in std::__invoke<CppEditor::CursorInfo (*&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>&, CPlusPlus::Snapshot&, int&, int&, CPlusPlus::Scope*&, QString&> (__fn=@0x7f0581ffa648: 0x7f073c730285 <CppEditor::(anonymous namespace)::FindUses::find(CPlusPlus::Document::Ptr, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&)>) at /usr/include/c++/11/bits/invoke.h:97 #32 0x00007f073c738c88 in std::invoke<CppEditor::CursorInfo (*&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>&, CPlusPlus::Snapshot&, int&, int&, CPlusPlus::Scope*&, QString&> (__fn=@0x7f0581ffa648: 0x7f073c730285 <CppEditor::(anonymous namespace)::FindUses::find(CPlusPlus::Document::Ptr, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&)>) at /usr/include/c++/11/functional:98 #33 0x00007f073c7388e9 in QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}::operator()(CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString) const (__closure=0x7f0581ffa97f, function=0x7f073c730285 <CppEditor::(anonymous namespace)::FindUses::find(CPlusPlus::Document::Ptr, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&)>, args#0=..., args#1=..., args#2=3162, args#3=38, args#4=0x0, args#5=...) at /home/jarek/dev/qt-64/qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:116 #34 0x00007f073c73946b in std::__invoke_impl<CppEditor::CursorInfo, QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>(std::__invoke_other, QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, CppEditor::CursorInfo (*&&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>&&, CPlusPlus::Snapshot&&, int&&, int&&, CPlusPlus::Scope*&&, QString&&) (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #35 0x00007f073c738ee4 in std::__invoke<QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>(QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, CppEditor::CursorInfo (*&&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>&&, CPlusPlus::Snapshot&&, int&&, int&&, CPlusPlus::Scope*&&, QString&&) (__fn=...) at /usr/include/c++/11/bits/invoke.h:97 #36 0x00007f073c738a0c in std::__apply_impl<QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, std::tuple<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>(QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, std::tuple<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>&&, std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>) (__f=..., __t=...) at /usr/include/c++/11/tuple:1855 #37 0x00007f073c738a8f in std::apply<QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, std::tuple<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString> >(QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor()::{lambda(CppEditor::CursorInfo (* const&)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString)#1}, std::tuple<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>&&) (__f=..., __t=...) at /usr/include/c++/11/tuple:1867 #38 0x00007f073c738af4 in QtConcurrent::StoredFunctionCall<CppEditor::CursorInfo (*)(QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot const&, int, int, CPlusPlus::Scope*, QString const&), QSharedPointer<CPlusPlus::Document>, CPlusPlus::Snapshot, int, int, CPlusPlus::Scope*, QString>::runFunctor (this=0x55a1c389ad20) at /home/jarek/dev/qt-64/qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:122 #39 0x00007f073c738774 in QtConcurrent::RunFunctionTaskBase<CppEditor::CursorInfo>::run (this=0x55a1c389ad20) at /home/jarek/dev/qt-64/qtbase/src/concurrent/qtconcurrentrunbase.h:83 #40 0x00007f077e41d78a in QThreadPoolThread::run (this=0x7f050c102b00) at /home/jarek/dev/qt-64/qtbase/src/corelib/thread/qthreadpool.cpp:66 #41 0x00007f077e415d41 in operator() (__closure=0x7f0581ffabd8) at /home/jarek/dev/qt-64/qtbase/src/corelib/thread/qthread_unix.cpp:321 #42 0x00007f077e416f87 in (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> >(struct {...} &&) (t=...) at /home/jarek/dev/qt-64/qtbase/src/corelib/thread/qthread_unix.cpp:257 #43 0x00007f077e415e0d in QThreadPrivate::start (arg=0x7f050c102b00) at /home/jarek/dev/qt-64/qtbase/src/corelib/thread/qthread_unix.cpp:280 #44 0x00007f077d894ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442 #45 0x00007f077d926850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Most probably the cause is that FindUses::find() isn't really thread safe - it operates on e.g. Document::Ptr, but it's not guaranteed that the main thread doesn't call any mutating method of it.