Details
-
Bug
-
Resolution: Fixed
-
Not Evaluated
-
Qt Creator 12.0.0
-
None
-
-
c05f9cacc (12.0)
Description
To reproduce:
1. Open a session containing Creator project
2. Start Analyze | CMake Profiler. After about 10 seconds: crash.
Once, I got the following assert prior to the crash:
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 0x0x556731bf76c0. Receiver '' (of type 'CtfVisualizer::Internal::CtfVisualizerTool') was created in thread 0x0x55672ef694f0", file /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp, line 535
The crash happen in non-main thread.
Call stack:
Thread 1 (Thread 0x7f5f617fa640 (LWP 124213)): #0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140047634376256) at ./nptl/pthread_kill.c:44 #1 __pthread_kill_internal (signo=6, threadid=140047634376256) at ./nptl/pthread_kill.c:78 #2 __GI___pthread_kill (threadid=140047634376256, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3 0x00007f6105e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4 0x00007f6105e287f3 in __GI_abort () at ./stdlib/abort.c:79 #5 0x00007f61066c52e0 in qAbort () at /home/jarek/dev/qt-65/qtbase/src/corelib/global/qglobal.cpp:161 #6 0x00007f61066d51aa in qt_message_fatal (context=..., message=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/global/qlogging.cpp:2059 #7 0x00007f61066d13ae in QMessageLogger::fatal (this=0x7f5f617f9040, msg=0x7f6106c0d6e0 "ASSERT failure in %s: \"%s\", file %s, line %d") at /home/jarek/dev/qt-65/qtbase/src/corelib/global/qlogging.cpp:939 #8 0x00007f61066c32a5 in qt_assert_x (where=0x7f6106c201d1 "QCoreApplication::sendEvent", what=0x7f5f05368f50 "Cannot send events to objects owned by a different thread. Current thread 0x0x556731bf76c0. Receiver '' (of type 'CtfVisualizer::Internal::CtfVisualizerTool') was created in thread 0x0x55672ef694f0", file=0x7f6106c1fe08 "/home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp", line=535) at /home/jarek/dev/qt-65/qtbase/src/corelib/global/qassert.cpp:77 #9 0x00007f61067791da in QCoreApplicationPrivate::checkReceiverThread (receiver=0x55672fe12e50) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:535 #10 0x00007f61085a5dc3 in QApplication::notify (this=0x55672ef85f80, receiver=0x55672fe12e50, e=0x7f5f617f9460) at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:2584 #11 0x00007f610677a405 in QCoreApplication::notifyInternal2 (receiver=0x55672fe12e50, event=0x7f5f617f9460) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1118 #12 0x00007f610677afa7 in QCoreApplication::sendEvent (receiver=0x55672fe12e50, event=0x7f5f617f9460) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1536 #13 0x00007f61068060ed in QObjectPrivate::setParent_helper (this=0x55672fe13c60, o=0x55672fe12e50) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:2264 #14 0x00007f6106805ad6 in QObject::setParent (this=0x55672fe13c40, parent=0x55672fe12e50) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:2189 #15 0x00007f60e424b874 in operator() (__closure=0x556731c82de8) at /home/jarek/dev/creator-12/src/plugins/ctfvisualizer/ctfvisualizertool.cpp:175 #16 0x00007f60e424f75d in std::__invoke_impl<void, CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #17 0x00007f60e424f73a in std::__invoke<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/11/bits/invoke.h:96 #18 0x00007f60e424f717 in std::invoke<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/11/functional:97 #19 0x00007f60e424f6d8 in operator()<>(void) (__closure=0x556731c82de8) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qthread.h:129 #20 0x00007f60e424f69a in std::__invoke_impl<void, QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #21 0x00007f60e424f65d in std::__invoke<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> >(struct {...} &&) (__fn=...) at /usr/include/c++/11/bits/invoke.h:96 #22 0x00007f60e424f60a in std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x556731c82de8) at /usr/include/c++/11/bits/std_thread.h:259 #23 0x00007f60e424f5b4 in std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >::operator()(void) (this=0x556731c82de8) at /usr/include/c++/11/bits/std_thread.h:266 #24 0x00007f60e424f3fa in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void>::operator()(void) const (this=0x7f5f617f9a50) at /usr/include/c++/11/future:1409 #25 0x00007f60e424f30d in std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void> &) (__f=...) at /usr/include/c++/11/bits/invoke.h:61 #26 0x00007f60e424f153 in std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void> &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:116 #27 0x00007f60e424ef5a in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>(), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:291 #28 0x00007f60e4252362 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const (this=0x7f5f617f9a50) at /usr/include/c++/11/bits/std_function.h:590 #29 0x00007f60e42515ce in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (this=0x556731c82dc0, __f=0x7f5f617f9a50, __did_set=0x7f5f617f99af) at /usr/include/c++/11/future:571 #30 0x00007f60e42545b9 in std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__f=@0x7f5f617f99f0: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7f60e4251594 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __t=@0x7f5f617f99c0: 0x556731c82dc0) at /usr/include/c++/11/bits/invoke.h:74 #31 0x00007f60e4253633 in std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__fn=@0x7f5f617f99f0: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7f60e4251594 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>) at /usr/include/c++/11/bits/invoke.h:96 #32 0x00007f60e42520ec in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}::operator()() const (__closure=0x7f5f617f9930) at /usr/include/c++/11/mutex:776 #33 0x00007f60e425366b in std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::operator()() const (__closure=0x0) at /usr/include/c++/11/mutex:712 #34 0x00007f60e4253680 in std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::_FUN() () at /usr/include/c++/11/mutex:712 #35 0x00007f6105e99f68 in __pthread_once_slow (once_control=0x556731c82dd8, init_routine=0x7f61062dad50 <__once_proxy>) at ./nptl/pthread_once.c:116 #36 0x00007f60e4249f24 in __gthread_once (__once=0x556731c82dd8, __func=0x7f61062dad50 <__once_proxy>) at /usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:700 #37 0x00007f60e4252171 in std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__once=..., __f=@0x7f5f617f99f0: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x7f60e4251594 <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>) at /usr/include/c++/11/mutex:783 #38 0x00007f60e42513a1 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) (this=0x556731c82dc0, __res=..., __ignore_failure=true) at /usr/include/c++/11/future:411 #39 0x00007f60e424fc1e in std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<QThread::create<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()> >(CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda()>&&)::<lambda(auto:32&& ...)> > >, void>::_M_complete_async(void) (this=0x556731c82dc0) at /usr/include/c++/11/future:1679 #40 0x00007f610693e849 in std::__future_base::_State_baseV2::wait (this=0x556731c82dc0) at /usr/include/c++/11/future:333 #41 0x00007f610693f164 in std::__basic_future<void>::_M_get_result (this=0x556731bf76d0) at /usr/include/c++/11/future:719 #42 0x00007f610693e9db in std::future<void>::get (this=0x556731bf76d0) at /usr/include/c++/11/future:891 #43 0x00007f610693ef1c in QThreadCreateThread::run (this=0x556731bf76c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qthread.cpp:1213 #44 0x00007f6106a2e98f in operator() (__closure=0x7f5f617f9c98) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qthread_unix.cpp:321 #45 0x00007f6106a2fc8b in (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> >(struct {...} &&) (t=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qthread_unix.cpp:257 #46 0x00007f6106a2ea5b in QThreadPrivate::start (arg=0x556731bf76c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qthread_unix.cpp:280 #47 0x00007f6105e94b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442 #48 0x00007f6105f26a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Attachments
For Gerrit Dashboard: QTCREATORBUG-29657 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
507747,4 | CtfVisualizer: Fix multithreading issues | 12.0 | qt-creator/qt-creator | Status: MERGED | +2 | 0 |