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

[EVR] Crash on readWglNvDxInteropProc() with nullptr access

    XMLWordPrintable

Details

    • Windows
    • 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.

      Attachments

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

        Activity

          People

            artemiy Artem Dyomin
            studiosus Vladimir Belyavsky
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes