[Development] Crash at program end

Helmut Mülner helmut.muelner at gmail.com
Wed Mar 2 11:26:25 CET 2016


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]	




More information about the Development mailing list