I have a complex mixed QML and C++ desktop application where I get crashes when closing the program. I use Qt-5.5.1/msvc2013 (32 bit) on Windows 7. I did not yet report a bug because I could not produce a small sample program to reproduce the bug.
The problem seems to be a double free of the OpenGL context a program end. A pre-condition of the crash seems to be that the program opens a second QML ApplicationWindow or a QML Dialog. Before the crash I always see the message "External WM_DESTROY received for ..." in the debug output. (qtbase\src\plugins\platforms\windows\qwindowscontext.cpp line 933). Does anybody have an idea how to prevent or fix this crash? Best regards, Helmut The call stack at the crash is: Qt5Cored.dll!qt_message_fatal(QtMsgType __formal, const QMessageLogContext & context, const QString & message) Line 1571 C++ Qt5Cored.dll!QMessageLogger::fatal(const char * msg, ...) Line 781 C++ Qt5Cored.dll!qt_assert(const char * assertion, const char * file, int line) Line 2966 C++ > Qt5Guid.dll!qt_gl_functions(QOpenGLContext * context) Line 214 C++ Qt5Guid.dll!`anonymous namespace'::Resolver<QOpenGLFunctionsPrivate,void (__stdcall*)(int,unsigned int const *),3,void>::operator()<int,unsigned int const *>(int p1, const unsigned int * p2) Line 2355 C++ Qt5Guid.dll!qopenglfResolveDeleteRenderbuffers(int n, const unsigned int * renderbuffers) Line 2813 C++ Qt5Guid.dll!QOpenGLFunctions::glDeleteRenderbuffers(int n, const unsigned int * renderbuffers) Line 1323 C++ Qt5Quickd.dll!QSGDefaultDepthStencilBuffer::free() Line 146 C++ Qt5Quickd.dll!QSGDefaultDepthStencilBuffer::~QSGDefaultDepthStencilBuffer() Line 140 C++ [External Code] Qt5Quickd.dll!QtSharedPointer::CustomDeleter<QSGDepthStencilBuffer,QtSharedP ointer::NormalDeleter>::execute() Line 189 C++ Qt5Quickd.dll!QtSharedPointer::ExternalRefCountWithCustomDeleter<QSGDepthSte ncilBuffer,QtSharedPointer::NormalDeleter>::deleter(QtSharedPointer::Externa lRefCountData * self) Line 211 C++ Qt5Quickd.dll!QtSharedPointer::ExternalRefCountData::destroy() Line 151 C++ Qt5Quickd.dll!QSharedPointer<QSGDepthStencilBuffer>::deref(QtSharedPointer:: ExternalRefCountData * d) Line 474 C++ Qt5Quickd.dll!QSharedPointer<QSGDepthStencilBuffer>::deref() Line 467 C++ Qt5Quickd.dll!QSharedPointer<QSGDepthStencilBuffer>::~QSharedPointer<QSGDept hStencilBuffer>() Line 306 C++ Qt5Quickd.dll!QSGDefaultLayer::~QSGDefaultLayer() Line 106 C++ [External Code] Qt5Quickd.dll!QQuickShaderEffectSource::invalidateSceneGraph() Line 698 C++ Qt5Quickd.dll!QQuickShaderEffectSource::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 191 C++ Qt5Cored.dll!QMetaMethod::invoke(QObject * object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue, QGenericArgument val0, QGenericArgument val1, QGenericArgument val2, QGenericArgument val3, QGenericArgument val4, QGenericArgument val5, QGenericArgument val6, QGenericArgument val7, QGenericArgument val8, QGenericArgument val9) Line 2212 C++ Qt5Cored.dll!QMetaMethod::invoke(QObject * object, Qt::ConnectionType connectionType, QGenericArgument val0, QGenericArgument val1, QGenericArgument val2, QGenericArgument val3, QGenericArgument val4, QGenericArgument val5, QGenericArgument val6, QGenericArgument val7, QGenericArgument val8, QGenericArgument val9) Line 118 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2690 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown(QQuickItem * item) Line 2691 C++ Qt5Quickd.dll!QQuickWindowPrivate::cleanupNodesOnShutdown() Line 2699 C++ Qt5Quickd.dll!QSGRenderThread::invalidateOpenGL(QQuickWindow * window, bool inDestructor, QOffscreenSurface * fallback) Line 461 C++ Qt5Quickd.dll!QSGRenderThread::event(QEvent * e) Line 383 C++ Qt5Quickd.dll!QSGRenderThread::processEventsAndWaitForMore() Line 659 C++ Qt5Quickd.dll!QSGRenderThread::run() Line 687 C++ Qt5Cored.dll!QThreadPrivate::start(void * arg) Line 369 C++ [External Code] _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development