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

Crash on exit on Windows due to accessing already deleted QNode

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • None
    • 5.5.0
    • Qt3D
    • None

    Description

      During application shutdown a crash occurs while processing a QSceneChange::Node event because the QNode is already destroyed.

      Happens sometimes (randomly) on Windows on exit. Have not noticed this on any other platform.

      Worker thread:

      >	Qt53DCored.dll!Qt3D::QNode::id() Line 315	C++
       	Qt53DCored.dll!Qt3D::QChangeArbiter::distributeQueueChanges(std::vector<QSharedPointer<Qt3D::QSceneChange>,
                  std::allocator<QSharedPointer<Qt3D::QSceneChange> > > * changeQueue) Line 143	C++
       	Qt53DCored.dll!Qt3D::QChangeArbiter::syncChanges() Line 194	C++
       	Qt53DCored.dll!Qt3D::QAspectManager::exec() Line 198	C++
       	Qt53DCored.dll!Qt3D::QAspectThread::run() Line 85	C++
       	Qt5Cored.dll!QThreadPrivate::start(void * arg) Line 346	C++
       	msvcr110d.dll!_callthreadstartex() Line 354	C
      

      Main thread:

       	ntdll.dll!NtWaitForSingleObject()	Unknown
       	KernelBase.dll!WaitForSingleObjectEx()	Unknown
      >	Qt5Cored.dll!QMutexPrivate::wait(int timeout) Line 59	C++
       	Qt5Cored.dll!QBasicMutex::lockInternal(int timeout) Line 492	C++
       	Qt5Cored.dll!QBasicMutex::lockInternal() Line 409	C++
       	Qt5Cored.dll!QBasicMutex::lock() Line 60	C++
       	Qt5Cored.dll!QRecursiveMutexPrivate::lock(int timeout) Line 621	C++
       	Qt5Cored.dll!QMutex::lock() Line 216	C++
       	Qt5Cored.dll!QMutexLocker::QMutexLocker(QBasicMutex * m) Line 129	C++
       	Qt53DCored.dll!Qt3D::QChangeArbiter::sceneChangeEventWithLock(const QSharedPointer<Qt3D::QSceneChange> & e) Line 261	C++
       	Qt53DCored.dll!Qt3D::QNodePrivate::notifyObservers(const QSharedPointer<Qt3D::QSceneChange> & change) Line 250	C++
       	Qt53DCored.dll!Qt3D::QComponentPrivate::removeEntity(Qt3D::QEntity * entity) Line 77	C++
       	Qt53DCored.dll!Qt3D::QEntity::removeComponent(Qt3D::QComponent * comp) Line 136	C++
       	Qt53DCored.dll!Qt3D::QEntity::removeAllComponents() Line 156	C++
       	Qt53DCored.dll!Qt3D::QEntity::~QEntity() Line 72	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::~QQmlElement<Qt3D::QEntity>() Line 98	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::`scalar deleting destructor'(unsigned int)	C++
       	Qt5Cored.dll!QObjectPrivate::deleteChildren() Line 1951	C++
       	Qt5Cored.dll!QObject::~QObject() Line 1033	C++
       	Qt53DCored.dll!Qt3D::QNode::~QNode() Line 310	C++
       	Qt53DCored.dll!Qt3D::QEntity::~QEntity() Line 72	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::~QQmlElement<Qt3D::QEntity>() Line 98	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::`scalar deleting destructor'(unsigned int)	C++
       	Qt5Cored.dll!QObjectPrivate::deleteChildren() Line 1951	C++
       	Qt5Cored.dll!QObject::~QObject() Line 1033	C++
       	Qt53DCored.dll!Qt3D::QNode::~QNode() Line 310	C++
       	Qt53DCored.dll!Qt3D::QEntity::~QEntity() Line 72	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::~QQmlElement<Qt3D::QEntity>() Line 98	C++
       	quick3dcoreplugind.dll!QQmlPrivate::QQmlElement<Qt3D::QEntity>::`scalar deleting destructor'(unsigned int)	C++
       	Qt53DCored.dll!QtSharedPointer::CustomDeleter<Qt3D::QEntity,QtSharedPointer::NormalDeleter>::execute() Line 189	C++
       	Qt53DCored.dll!QtSharedPointer::ExternalRefCountWithCustomDeleter<Qt3D::QEntity,QtSharedPointer::NormalDeleter>
                  ::deleter(QtSharedPointer::ExternalRefCountData * self) Line 211	C++
       	Qt53DCored.dll!QtSharedPointer::ExternalRefCountData::destroy() Line 151	C++
       	Qt53DCored.dll!QSharedPointer<Qt3D::QEntity>::deref(QtSharedPointer::ExternalRefCountData * d) Line 473	C++
       	Qt53DCored.dll!QSharedPointer<Qt3D::QEntity>::deref() Line 466	C++
       	Qt53DCored.dll!QSharedPointer<Qt3D::QEntity>::~QSharedPointer<Qt3D::QEntity>() Line 305	C++
       	Qt53DCored.dll!QSharedPointer<Qt3D::QEntity>::reset(Qt3D::QEntity * t) Line 361	C++
       	Qt53DCored.dll!Qt3D::QAspectEngine::setRootEntity(Qt3D::QEntity * root) Line 203	C++
       	Qt53DCored.dll!Qt3D::QAspectEngine::shutdown() Line 138	C++
       	Qt53DCored.dll!Qt3D::QAspectEngine::~QAspectEngine() Line 95	C++
       	Qt53DQuickd.dll!Qt3D::QAspectEngine::`scalar deleting destructor'(unsigned int)	C++
       	Qt53DQuickd.dll!QScopedPointerDeleter<Qt3D::QAspectEngine>::cleanup(Qt3D::QAspectEngine * pointer) Line 54	C++
       	Qt53DQuickd.dll!QScopedPointer<Qt3D::QAspectEngine,QScopedPointerDeleter<Qt3D::QAspectEngine> >
                   ::~QScopedPointer<Qt3D::QAspectEngine,QScopedPointerDeleter<Qt3D::QAspectEngine> >() Line 102	C++
       	Qt53DQuickd.dll!Qt3D::Quick::QQmlAspectEnginePrivate::~QQmlAspectEnginePrivate()	C++
       	Qt53DQuickd.dll!Qt3D::Quick::QQmlAspectEnginePrivate::`scalar deleting destructor'(unsigned int)	C++
       	Qt5Cored.dll!QScopedPointerDeleter<QObjectData>::cleanup(QObjectData * pointer) Line 54	C++
       	Qt5Cored.dll!QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> >
                 ::~QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData> >() Line 102	C++
       	Qt5Cored.dll!QObject::~QObject() Line 1039	C++
       	Qt53DQuickd.dll!Qt3D::Quick::QQmlAspectEngine::~QQmlAspectEngine()	C++
       	materials.exe!main(int argc, char * * argv) Line 69	C++
       	materials.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 113	C++
      

      Attachments

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

        Activity

          People

            lemire_p Paul Lemire
            lagocs Laszlo Agocs
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes