Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-30401

Crash on find after freeze

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Not Evaluated
    • Qt Creator 13.0.0-beta2
    • Qt Creator 13.0.0
    • Editors
    • None
    • Linux/X11
    • 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.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kandeler Christian Kandeler
            jkobus Jarek Kobus
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes