Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.3.2
-
None
-
-
58e0ca625 (dev), ad8937d94 (6.5), e41b9c4d3 (6.6)
Description
I see such crashes among our users crash reports. It's never reproduced for me locally and I have no idea why this may happen for end users.
Unhandled exception thrown: read access violation. **str1** was nullptr.
Stack:
VCRUNTIME140.dll!strstr(const char * str1, const char * str2) Line 226 C > Qt6Multimedia.dll!readWglNvDxInteropProc(WglNvDxInterop & f) Line 368 C++ Qt6Multimedia.dll!D3DPresentEngine::createD3DDevice() Line 397 C++ [Inline Frame] Qt6Multimedia.dll!D3DPresentEngine::setSink(QVideoSink *) Line 307 C++ Qt6Multimedia.dll!D3DPresentEngine::D3DPresentEngine(QVideoSink * sink) Line 281 C++ Qt6Multimedia.dll!EVRCustomPresenter::EVRCustomPresenter(QVideoSink * sink) Line 574 C++ Qt6Multimedia.dll!EVRCustomPresenterActivate::ActivateObject(const _GUID & riid, void * * ppv) Line 2263 C++ mf.dll!00007ffef9b64577() Unknown mf.dll!00007ffef9b52e8b() Unknown mf.dll!00007ffef9b52221() Unknown mf.dll!00007ffef9b522d8() Unknown Qt6Multimedia.dll!BindOutputNode(IMFTopologyNode * pNode) Line 693 C++ [Inline Frame] Qt6Multimedia.dll!BindOutputNodes(IMFTopology *) Line 753 C++ Qt6Multimedia.dll!MFPlayerSession::insertMFT(IMFTopology * topology, unsigned __int64 outputNodeId) Line 777 C++ Qt6Multimedia.dll!MFPlayerSession::setupPlaybackTopology(IMFMediaSource * source, IMFPresentationDescriptor * sourcePD) Line 448 C++ Qt6Multimedia.dll!MFPlayerSession::handleMediaSourceReady() Line 282 C++ [Inline Frame] Qt6Core.dll!QtPrivate::QSlotObjectBase::call(QObject *) Line 399 C++ Qt6Core.dll!QMetaCallEvent::placeMetaCall(QObject * object) Line 631 C++ Qt6Core.dll!QObject::event(QEvent * e) Line 1356 C++ Qt6Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3352 C++ Qt6Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3304 C++ Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1067 C++ [Inline Frame] Qt6Core.dll!QCoreApplication::sendEvent(QObject *) Line 1483 C++ Qt6Core.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1845 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 80 C++ Qt6Core.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 476 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 73 C++ [Inline Frame] Qt6Core.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>) Line 136 C++ Qt6Core.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 218 C++ Qt6Core.dll!QCoreApplication::exec() Line 1388 C++
HWND hwnd = ::GetShellWindow(); auto dc = ::GetDC(hwnd); --> bool hasExtension = strstr(wglGetExtensionsStringARB(dc), "WGL_NV_DX_interop"); ReleaseDC(hwnd, dc); if (!hasExtension) { qCDebug(qLcEvrD3DPresentEngine) << "WGL_NV_DX_interop missing"; return false; }
This happen inside strstr() because wglGetExtensionsStringARB(dc) has returned nullptr.
Interesting that minidump shows that dc is also 0.