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

Crash when copying nlohmann::json object

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Not Evaluated Not Evaluated
    • None
    • Qt Creator 12.0.0
    • None
    • Linux/X11
    • 97518b3f6 (12.0)

      Thread 1 (Thread 0x7f726750d8c0 (LWP 143891)):
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140129336350912) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=140129336350912) at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=140129336350912, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
      #3  0x00007f7266042476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
      #4  0x00007f72660287f3 in __GI_abort () at ./stdlib/abort.c:79
      #5  0x00007f72660a0f4a in __malloc_assert (assertion=assertion@entry=0x7f72661de9a8 "(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)", file=file@entry=0x7f72661d96ac "malloc.c", line=line@entry=2617, function=function@entry=0x7f72661df218 <__PRETTY_FUNCTION__.8> "sysmalloc") at ./malloc/malloc.c:307
      #6  0x00007f72660a39b7 in sysmalloc (nb=nb@entry=96, av=av@entry=0x7f7266219c80 <main_arena>) at ./malloc/malloc.c:2617
      #7  0x00007f72660a495d in _int_malloc (av=av@entry=0x7f7266219c80 <main_arena>, bytes=bytes@entry=88) at ./malloc/malloc.c:4407
      #8  0x00007f72660a51b9 in __GI___libc_malloc (bytes=88) at ./malloc/malloc.c:3329
      #9  0x00007f72664ae98c in operator new(unsigned long) () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #10 0x00007f72200cd74e in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::pair<QString, QString> > > >::allocate (this=0x7f71b1a893d8, __n=1) at /usr/include/c++/11/ext/new_allocator.h:127
      #11 0x00007f72200cb22e in std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, std::pair<QString, QString> > > > >::allocate (__a=..., __n=1) at /usr/include/c++/11/bits/alloc_traits.h:464
      #12 0x00007f72200c7c9f in std::_Rb_tree<int, std::pair<int const, std::pair<QString, QString> >, std::_Select1st<std::pair<int const, std::pair<QString, QString> > >, std::less<int>, std::allocator<std::pair<int const, std::pair<QString, QString> > > >::_M_get_node (this=0x7f71b1a893d8) at /usr/include/c++/11/bits/stl_tree.h:561
      #13 0x00007f72200c294f in std::_Rb_tree<int, std::pair<int const, std::pair<QString, QString> >, std::_Select1st<std::pair<int const, std::pair<QString, QString> > >, std::less<int>, std::allocator<std::pair<int const, std::pair<QString, QString> > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<int const&>, std::tuple<std::pair<QString, QString> const&> > (this=0x7f71b1a893d8) at /usr/include/c++/11/bits/stl_tree.h:611
      #14 0x00007f72200bcf75 in std::_Rb_tree<int, std::pair<int const, std::pair<QString, QString> >, std::_Select1st<std::pair<int const, std::pair<QString, QString> > >, std::less<int>, std::allocator<std::pair<int const, std::pair<QString, QString> > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<int const&>, std::tuple<std::pair<QString, QString> const&> > (this=0x7f71b1a893d8, __pos={first = 1, second = {first = {d = {d = 0x25, ptr = 0x1 <error: Cannot access memory at address 0x1>, size = 140126288645088}, static _empty = 0 u'\000'}, second = {d = {d = 0x0, ptr = 0x45 <error: Cannot access memory at address 0x45>, size = 1}, static _empty = 0 u'\000'}}}) at /usr/include/c++/11/bits/stl_tree.h:2431
      #15 0x00007f72200b6e49 in std::map<int, std::pair<QString, QString>, std::less<int>, std::allocator<std::pair<int const, std::pair<QString, QString> > > >::emplace_hint<std::piecewise_construct_t const&, std::tuple<int const&>, std::tuple<std::pair<QString, QString> const&> > (this=0x7f71b1a893d8, __pos={first = 1, second = {first = {d = {d = 0x25, ptr = 0x1 <error: Cannot access memory at address 0x1>, size = 140126288645088}, static _empty = 0 u'\000'}, second = {d = {d = 0x0, ptr = 0x45 <error: Cannot access memory at address 0x45>, size = 1}, static _empty = 0 u'\000'}}}) at /usr/include/c++/11/bits/stl_map.h:608
      #16 0x00007f72200b2779 in std::map<int, std::pair<QString, QString>, std::less<int>, std::allocator<std::pair<int const, std::pair<QString, QString> > > >::insert_or_assign<std::pair<QString, QString> const&> (this=0x7f71b1a893d8, __k=@0x7ffd2d6b0018: 1, __obj={...}) at /usr/include/c++/11/bits/stl_map.h:923
      #17 0x00007f72200af9a0 in QMap<int, std::pair<QString, QString> >::insert (this=0x5604adf9cbc8, key=@0x7ffd2d6b0018: 1, value={...}) at /home/jarek/dev/qt-65/qtbase/src/corelib/tools/qmap.h:692
      #18 0x00007f72200abb0d in CtfVisualizer::Internal::CtfTimelineModel::newStackEvent (this=0x7f70935bbfb0, event=..., normalizedTime=91175000, eventPhase="B", name="unset", selectionId=20) at /home/jarek/dev/creator-12/src/plugins/ctfvisualizer/ctftimelinemodel.cpp:283
      #19 0x00007f72200aa50d in CtfVisualizer::Internal::CtfTimelineModel::addEvent (this=0x7f70935bbfb0, event=..., timeOffset=25136064417) at /home/jarek/dev/creator-12/src/plugins/ctfvisualizer/ctftimelinemodel.cpp:154
      #20 0x00007f72200d1210 in CtfVisualizer::Internal::CtfTraceManager::addEvent (this=0x5604a72e30b0, event=...) at /home/jarek/dev/creator-12/src/plugins/ctfvisualizer/ctftracemanager.cpp:87
      #21 0x00007f7220075d14 in operator() (__closure=0x5604a90a5970, index=20721) at /home/jarek/dev/creator-12/src/plugins/ctfvisualizer/ctfvisualizertool.cpp:227
      #22 0x00007f72200785f4 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda(Utils::Async<nlohmann::json_abi_v3_11_2::basic_json<> >&)>::<lambda(int)> >::call(struct {...} &, void **) (f=..., arg=0x7ffd2d6b05c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:129
      #23 0x00007f722007817b in QtPrivate::Functor<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda(Utils::Async<nlohmann::json_abi_v3_11_2::basic_json<> >&)>::<lambda(int)>, 1>::call<QtPrivate::List<int>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffd2d6b05c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:243
      #24 0x00007f7220077cf6 in QtPrivate::QFunctorSlotObject<CtfVisualizer::Internal::CtfVisualizerTool::loadJson(const QString&)::<lambda(Utils::Async<nlohmann::json_abi_v3_11_2::basic_json<> >&)>::<lambda(int)>, 1, QtPrivate::List<int>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5604a90a5960, r=0x5604a72f75f0, a=0x7ffd2d6b05c0, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:423
      #25 0x00007f726699dbb7 in QtPrivate::QSlotObjectBase::call (this=0x5604a90a5960, r=0x5604a72f75f0, a=0x7ffd2d6b05c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:374
      #26 0x00007f7266a1611a in doActivate<false> (sender=0x5604a8a4c480, signal_index=5, argv=0x7ffd2d6b05c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4017
      #27 0x00007f7266a0bff5 in QMetaObject::activate (sender=0x5604a8a4c480, m=0x7f7269c22040 <Utils::AsyncBase::staticMetaObject>, local_signal_index=2, argv=0x7ffd2d6b05c0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4077
      #28 0x00007f726954344b in Utils::AsyncBase::resultReadyAt (this=0x5604a8a4c480, _t1=20721) at /home/jarek/dev/creator-12-build-65/src/libs/utils/Utils_autogen/EWIEGA46WW/moc_async.cpp:210
      #29 0x00007f72200a229d in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, void (Utils::AsyncBase::*)(int)>::call (f=(void (Utils::AsyncBase::*)(Utils::AsyncBase * const, int)) 0x7f72695433ea <Utils::AsyncBase::resultReadyAt(int)>, o=0x5604a8a4c480, arg=0x7ffd2d6b0830) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:137
      #30 0x00007f72200a0b9b in QtPrivate::FunctionPointer<void (Utils::AsyncBase::*)(int)>::call<QtPrivate::List<int>, void> (f=(void (Utils::AsyncBase::*)(Utils::AsyncBase * const, int)) 0x7f72695433ea <Utils::AsyncBase::resultReadyAt(int)>, o=0x5604a8a4c480, arg=0x7ffd2d6b0830) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:174
      #31 0x00007f722009e72d in QtPrivate::QSlotObject<void (Utils::AsyncBase::*)(int), QtPrivate::List<int>, void>::impl (which=1, this_=0x5604ad9af570, r=0x5604a8a4c480, a=0x7ffd2d6b0830, ret=0x0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
      #32 0x00007f726699dbb7 in QtPrivate::QSlotObjectBase::call (this=0x5604ad9af570, r=0x5604a8a4c480, a=0x7ffd2d6b0830) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobjectdefs_impl.h:374
      #33 0x00007f7266a1611a in doActivate<false> (sender=0x5604a8a4c4c8, signal_index=10, argv=0x7ffd2d6b0830) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4017
      #34 0x00007f7266a0bff5 in QMetaObject::activate (sender=0x5604a8a4c4c8, m=0x7f7267157440 <QFutureWatcherBase::staticMetaObject>, local_signal_index=7, argv=0x7ffd2d6b0830) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qobject.cpp:4077
      #35 0x00007f7266c4e933 in QFutureWatcherBase::resultReadyAt (this=0x5604a8a4c4c8, _t1=20721) at /home/jarek/dev/qt-65-build/qtbase/src/corelib/Core_autogen/include/moc_qfuturewatcher.cpp:492
      #36 0x00007f7266c4de3e in QFutureWatcherBasePrivate::sendCallOutEvent (this=0x5604a911ff50, event=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qfuturewatcher.cpp:536
      #37 0x00007f7266c4d611 in QFutureWatcherBase::event (this=0x5604a8a4c4c8, event=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/corelib/thread/qfuturewatcher.cpp:392
      #38 0x00007f72687a8cfa in QApplicationPrivate::notify_helper (this=0x5604a644b670, receiver=0x5604a8a4c4c8, e=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:3287
      #39 0x00007f72687a8aec in QApplication::notify (this=0x5604a6468680, receiver=0x5604a8a4c4c8, e=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:3238
      #40 0x00007f726697a405 in QCoreApplication::notifyInternal2 (receiver=0x5604a8a4c4c8, event=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1118
      #41 0x00007f726697afa7 in QCoreApplication::sendEvent (receiver=0x5604a8a4c4c8, event=0x7f71b1a8ad60) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1536
      #42 0x00007f726697befe in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5604a64539d0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1898
      #43 0x00007f726697b7cc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1757
      #44 0x00007f7266dc90fc in postEventSourceDispatch (s=0x5604a64d9f70) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:243
      #45 0x00007f726631bd3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #46 0x00007f7266371258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #47 0x00007f72663193e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #48 0x00007f7266dc99be in QEventDispatcherGlib::processEvents (this=0x5604a64d1840, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:393
      #49 0x00007f726231df3e in QXcbGlibEventDispatcher::processEvents (this=0x5604a64d1840, flags=...) at /home/jarek/dev/qt-65/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:96
      #50 0x00007f726698e98d in QEventLoop::processEvents (this=0x7ffd2d6b0f90, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventloop.cpp:100
      #51 0x00007f726698ecfc in QEventLoop::exec (this=0x7ffd2d6b0f90, flags=...) at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qeventloop.cpp:182
      #52 0x00007f726697ad70 in QCoreApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/corelib/kernel/qcoreapplication.cpp:1439
      #53 0x00007f72677e5c82 in QGuiApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/gui/kernel/qguiapplication.cpp:1909
      #54 0x00007f72687a5ce7 in QApplication::exec () at /home/jarek/dev/qt-65/qtbase/src/widgets/kernel/qapplication.cpp:2566
      #55 0x00005604a555a4da in main (argc=1, argv=0x7ffd2d6b16e8) at /home/jarek/dev/creator-12/src/app/main.cpp:830
      

      I got this crash just once, after applying https://codereview.qt-project.org/c/qt-creator/qt-creator/+/507747 for the first time. Later, I couldn't reproduce it.

      TODO: Ensure it's safe to create nlohmann::json in one thread, do a copy and access it in the other thread.

      Update: It may be related to https://codereview.qt-project.org/c/qt-creator/qt-creator/+/502542 - should a call to CtfTraceManager::addEvent() be secured with try / catch blocks?

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

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

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes