Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
6.0.0 Beta5
-
3
Description
Deleting a view that uses importScene and then deleting the importScene after that crashes when clearing materials. It happens because clearing materials marks model dirty, and dirty handling accesses sceneManager->dirtySpatialNodeList, which presumably is garbage at this point.
This causes crash in QDS during qmlpuppet shutdown. It can probably be worked around there by not deleting the views at shutdown, though.
See attached example.
1 QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>::get qscopedpointer.h 137 0x7ffd7cf73edb 2 qGetPtrHelper<QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>> qglobal.h 1154 0x7ffd7cf5ae58 3 QQuick3DObject::d_func qquick3dobject.h 51 0x7ffd7cf7218f 4 QQuick3DObjectPrivate::get qquick3dobject_p.h 91 0x7ffd7cf73f18 5 QQuick3DObjectPrivate::addToDirtyList qquick3dobject.cpp 838 0x7ffd7cff1857 6 QQuick3DObjectPrivate::dirty qquick3dobject.cpp 797 0x7ffd7cff154a 7 QQuick3DObject::update qquick3dobject.cpp 130 0x7ffd7cfee3bc 8 QQuick3DModel::markDirty qquick3dmodel.cpp 504 0x7ffd7cfd9b54 9 QQuick3DModel::qmlClearMaterials qquick3dmodel.cpp 604 0x7ffd7cfda13b 10 QQuick3DModel::~QQuick3DModel qquick3dmodel.cpp 133 0x7ffd7cfd8158 11 QQmlPrivate::QQmlElement<QQuick3DModel>::~QQmlElement<QQuick3DModel> qqmlprivate.h 133 0x7ffd7d075f42 12 QQmlPrivate::QQmlElement<QQuick3DModel>::`scalar deleting destructor' Qt6Quick3Dd 0x7ffd7d07ebfc 13 qDeleteInEventHandler qobject.cpp 4710 0x7ffd72076d9f 14 QObject::event qobject.cpp 1294 0x7ffd7206c702 15 QCoreApplicationPrivate::notify_helper qcoreapplication.cpp 1201 0x7ffd71a3de46 16 doNotify qcoreapplication.cpp 1130 0x7ffd71a3feb4 17 QCoreApplication::notify qcoreapplication.cpp 1117 0x7ffd71a3ab46 18 QGuiApplication::notify qguiapplication.cpp 1945 0x7ffd7e334a63 19 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1040 0x7ffd71a3c6a5 20 QCoreApplication::sendEvent qcoreapplication.cpp 1436 0x7ffd71a3a203 ... <More>