Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-56368

Crash when using async NodeInstantiator within Scene3D

    XMLWordPrintable

Details

    • Linux/X11, macOS, QNX, Windows

    Description

      I have a Scene3D with a NodeInstantiator inside it with asynchronous enabled. As the source model for the instantiator is slowly populated, it eventually leads to a crash due to index-out-of-range while incubating a delegate instance.

      I cannot reproduce the crash when using the same code without Scene3D, or when I set asynchronous to false.

      #0  0x00007ffbae02d6f5 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
      #1  0x00007ffbae02f2fa in __GI_abort () at abort.c:89
      #2  0x00007ffbaed0e760 in qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) (context=..., message="ASSERT failure in QVector<T>::insert: \"index out of range\", file /data/Qt/qt5/build/qtbase/include/QtCore/../../../../qtbase/src/corelib/tools/qvector.h, line 441") at /data/Qt/qt5/qtbase/src/corelib/global/qlogging.cpp:1682
      #3  0x00007ffbaed0a9fa in QMessageLogger::fatal(char const*, ...) const (this=0x7ffce192cf10, msg=0x7ffbaf046178 "ASSERT failure in %s: \"%s\", file %s, line %d") at /data/Qt/qt5/qtbase/src/corelib/global/qlogging.cpp:793
      #4  0x00007ffbaed03b9f in qt_assert_x(char const*, char const*, char const*, int) (where=0x7ffb833ce7ea "QVector<T>::insert", what=0x7ffb833ce7c0 "index out of range", file=0x7ffb833ce768 "/data/Qt/qt5/build/qtbase/include/QtCore/../../../../qtbase/src/corelib/tools/qvector.h", line=441) at /data/Qt/qt5/qtbase/src/corelib/global/qglobal.cpp:3089
      #5  0x00007ffb833c5693 in QVector<QPointer<QObject> >::insert(int, QPointer<QObject> const&) (this=0x212eee0, i=26, t=...) at /data/Qt/qt5/build/qtbase/include/QtCore/../../../../qtbase/src/corelib/tools/qvector.h:441
      #6  0x00007ffb833c3545 in Qt3DCore::Quick::Quick3DNodeInstantiatorPrivate::_q_createdItem(int, QObject*) (this=0x212edf0, idx=26, item=0x3a094e0) at /data/Qt/qt5/qt3d/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp:152
      #7  0x00007ffb833c46c3 in Qt3DCore::Quick::Quick3DNodeInstantiator::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x212ec60, _c=QMetaObject::InvokeMetaMethod, _id=8, _a=0x7ffce192d2e0)
          at .moc/moc_quick3dnodeinstantiator_p.cpp:153
      #8  0x00007ffbaef9f148 in QMetaObject::activate(QObject*, int, int, void**) (sender=0x28bf4a0, signalOffset=3, local_signal_index=2, argv=0x7ffce192d2e0) at /data/Qt/qt5/qtbase/src/corelib/kernel/qobject.cpp:3740
      #9  0x00007ffbaef9e93c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x28bf4a0, m=0x7ffb82df9820 <QQmlInstanceModel::staticMetaObject>, local_signal_index=2, argv=0x7ffce192d2e0)
          at /data/Qt/qt5/qtbase/src/corelib/kernel/qobject.cpp:3602
      #10 0x00007ffb82bf4b08 in QQmlInstanceModel::createdItem(int, QObject*) (this=0x28bf4a0, _t1=26, _t2=0x3a094e0) at .moc/moc_qqmlobjectmodel_p.cpp:229
      #11 0x00007ffb82bc4883 in QQmlDelegateModelPrivate::emitCreatedItem(QQDMIncubationTask*, QObject*) (this=0x28bf4d0, incubationTask=0x4efe720, item=0x3a094e0)
          at /data/Qt/qt5/qtdeclarative/src/qml/types/qqmldelegatemodel_p_p.h:269
      #12 0x00007ffb82bb7c31 in QQmlDelegateModelPrivate::incubatorStatusChanged(QQDMIncubationTask*, QQmlIncubator::Status) (this=0x28bf4d0, incubationTask=0x4efe720, status=QQmlIncubator::Ready)
          at /data/Qt/qt5/qtdeclarative/src/qml/types/qqmldelegatemodel.cpp:880
      #13 0x00007ffb82bb78dc in QQDMIncubationTask::statusChanged(QQmlIncubator::Status) (this=0x4efe720, status=QQmlIncubator::Ready) at /data/Qt/qt5/qtdeclarative/src/qml/types/qqmldelegatemodel.cpp:826
      #14 0x00007ffb82affd7a in QQmlIncubatorPrivate::changeStatus(QQmlIncubator::Status) (this=0x4efe780, s=QQmlIncubator::Ready) at /data/Qt/qt5/qtdeclarative/src/qml/qml/qqmlincubator.cpp:707
      #15 0x00007ffb82aff554 in QQmlIncubatorPrivate::incubate(QQmlInstantiationInterrupt&) (this=0x4efe780, i=...) at /data/Qt/qt5/qtdeclarative/src/qml/qml/qqmlincubator.cpp:374
      #16 0x00007ffb82aff6ef in QQmlIncubationController::incubateFor(int) (this=0x21180a0, msecs=10) at /data/Qt/qt5/qtdeclarative/src/qml/qml/qqmlincubator.cpp:401
      #17 0x00007ffb83034e5d in QQuickWindowIncubationController::incubate() (this=0x2118090) at /data/Qt/qt5/qtdeclarative/src/quick/items/qquickwindow.cpp:146
      #18 0x00007ffb83034d96 in QQuickWindowIncubationController::timerEvent(QTimerEvent*) (this=0x2118090) at /data/Qt/qt5/qtdeclarative/src/quick/items/qquickwindow.cpp:129
      #19 0x00007ffbaef985d0 in QObject::event(QEvent*) (this=0x2118090, e=0x7ffce192de50) at /data/Qt/qt5/qtbase/src/corelib/kernel/qobject.cpp:1244
      #20 0x00007ffbafa6af46 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x1948a40, receiver=0x2118090, e=0x7ffce192de50) at /data/Qt/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3799
      #21 0x00007ffbafa68316 in QApplication::notify(QObject*, QEvent*) (this=0x7ffce192e270, receiver=0x2118090, e=0x7ffce192de50) at /data/Qt/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3159
      #22 0x00007ffbaef5e390 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x2118090, event=0x7ffce192de50) at /data/Qt/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:988
      #23 0x00007ffbaef62400 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x2118090, event=0x7ffce192de50) at ../../include/QtCore/../../../../qtbase/src/corelib/kernel/qcoreapplication.h:231
      #24 0x00007ffbaefd8a56 in QTimerInfoList::activateTimers() (this=0x19be9b0) at /data/Qt/qt5/qtbase/src/corelib/kernel/qtimerinfo_unix.cpp:644
      #25 0x00007ffbaefd9d5a in timerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=0x19be950) at /data/Qt/qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:182
      #26 0x00007ffbaa2666ba in g_main_context_dispatch (context=0x7ffb940016f0) at gmain.c:3154
      #27 0x00007ffbaa2666ba in g_main_context_dispatch (context=context@entry=0x7ffb940016f0) at gmain.c:3769
      #28 0x00007ffbaa266a70 in g_main_context_iterate (context=context@entry=0x7ffb940016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
      #29 0x00007ffbaa266b1c in g_main_context_iteration (context=0x7ffb940016f0, may_block=1) at gmain.c:3901
      #30 0x00007ffbaefda734 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x19c5fd0, flags=...) at /data/Qt/qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:425
      #31 0x00007ffba0700b66 in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x19c5fd0, flags=...) at /data/Qt/qt5/qtbase/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp:121
      #32 0x00007ffbaef5ad50 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffce192e160, flags=...) at /data/Qt/qt5/qtbase/src/corelib/kernel/qeventloop.cpp:134
      #33 0x00007ffbaef5b04c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffce192e160, flags=...) at /data/Qt/qt5/qtbase/src/corelib/kernel/qeventloop.cpp:212
      #34 0x00007ffbaef5eada in QCoreApplication::exec() () at /data/Qt/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1261
      #35 0x00007ffbaf393660 in QGuiApplication::exec() () at /data/Qt/qt5/qtbase/src/gui/kernel/qguiapplication.cpp:1633
      #36 0x00007ffbafa67cf1 in QApplication::exec() () at /data/Qt/qt5/qtbase/src/widgets/kernel/qapplication.cpp:2975
      #37 0x0000000000401718 in main(int, char**) (argc=2, argv=0x7ffce192e408) at /data/KDAB/GammaRay/client/main.cpp:65
      

      Attachments

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

        Activity

          People

            lemire_p Paul Lemire
            dvratil Daniel Vrátil
            Votes:
            1 Vote for this issue
            Watchers:
            11 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes