Details
-
Bug
-
Resolution: Won't Do
-
P1: Critical
-
None
-
5.10.1, 5.11.1
-
None
-
Windows 10 64bit using Qt 5.10 32bit MSVC2015 & Qt 5.11.1 32bit MSVC2015
Description
With Qt::AA_UseOpenGLES set and render loop set to 'threaded' the crash is 100% reproducible using an animator and loading another QML file using a loader.
A project to reproduce the crash is attached.
This appears to be a multi-thread issue and the crash occurs in multiple places, the exact error thrown by QT is:
"D3D11 CORRUPTION: ID3D11DeviceContext::Map: Two threads were found to be executing functions associated with the same Device[Context] at the same time. This will cause corruption of memory. Appropriate thread synchronization needs to occur external to the Direct3D API (or through the ID3D10Multithread interface). 4912 and 10588 are the implicated thread ids. [ MISCELLANEOUS CORRUPTION #28: CORRUPTED_MULTITHREADING]"
Stack trace is below although this is different every time due to the nature of the crash:
1 RaiseException KERNELBASE 0x7769aba2 2 ReportCorruption D3D11_3SDKLayers 0x67e78e5 3 NDebug::CInterfaceSentinel::CFunctionSentinel::ReportMessageAndRaiseException D3D11_3SDKLayers 0x677ad90 4 NDebug::CSingleThreadedInterfaceSentinel::CSingleThreadedFunctionSentinel::ValidateThreading D3D11_3SDKLayers 0x67c1eb3 5 NDebug::CSingleThreadedInterfaceSentinel::CSingleThreadedFunctionSentinel::CSingleThreadedFunctionSentinel D3D11_3SDKLayers 0x67c1f8d 6 NDebug::CContext::OMSetRenderTargets D3D11_3SDKLayers 0x678e0fc 7 rx::Renderer11::setOneTimeRenderTarget Renderer11.cpp 2952 0x623f5f4 8 rx::SwapChain11::copyOffscreenToBackbuffer SwapChain11.cpp 761 0x6279b23 9 rx::SwapChain11::swapRect SwapChain11.cpp 670 0x627ca81 10 rx::SurfaceD3D::swapRect SurfaceD3D.cpp 231 0x60e2e2a 11 rx::SurfaceD3D::swap SurfaceD3D.cpp 371 0x60e2d3c 12 egl::Surface::swap Surface.cpp 122 0x6035a08 13 egl::SwapBuffers entry_points_egl.cpp 826 0x61139cc 14 eglSwapBuffers libEGL.cpp 112 0x5922094 15 QWindowsEGLContext::swapBuffers qwindowseglcontext.cpp 539 0x3381470 16 QOpenGLContext::swapBuffers qopenglcontext.cpp 1109 0xf765c54 17 QSGRenderThread::syncAndRender qsgthreadedrenderloop.cpp 652 0x44207d2 18 QSGRenderThread::run qsgthreadedrenderloop.cpp 732 0x4420070 19 QThreadPrivate::start qthread_win.cpp 380 0x66b1ce13 20 BaseThreadInitThunk KERNEL32 0x753962c4 21 __RtlUserThreadStart ntdll 0x77e41eb9 22 _RtlUserThreadStart ntdll 0x77e41e84