Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
5.7.0, 5.15.9, 6.3.0
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