EXCEPTION_ACCESS_VIOLATION in d3d11 when using HTC Focus 3 with SteamVR (UE 4.27)

I am working to verify support for additional VR Headsets in my game (UE 4.27). I have successfully used:

  • Oculus Quest 2 with Oculus API
  • HP Reverb G2 with Windows Mixed Reality
  • Oculus Quest 2 with SteamVR
  • Pico Neo 3 with SteamVR

I have acquired an HTC Focus 3, which uses an intermediate program ‘HTC Business Streaming’ to interface with SteamVR. Other than that, SteamVR seems unmodified and remains the OpenXR runtime.

The demo VR Template Map works fine with the Focus 3, as does another small project I have. However, I am getting a fatal error while trying to play the built versions of my game, and attempting VR Preview crashes the Editor with the stack trace included at the bottom of the question.

One frame is successfully rendered to the headset. Usually the PC preview continues running for a second or two (at regular performance), with head and hand tracking working, before it freezes as well.

I have installed debugging symbols, verified the engine install, and updated my Nvidia Drivers to the latest version. I am using a Quadro RTX 3000, if that is relevant.

What could be causing this crash? Where do I even start looking? The stack trace for this EXCEPTION_ACCESS_VIOLATION is different from all the others posted so far, there isn’t an obvious plugin or culprit that is actually throwing the error (that I can tell).

 Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

d3d11
vrclient_x64
vrclient_x64
vrclient_x64
vrclient_x64
vrclient_x64
vrclient_x64
UE4Editor_OpenXRHMD!FOpenXRHMD::OnFinishRendering_RHIThread() [D:\Build\++UE4\Sync\Engine\Plugins\Runtime\OpenXR\Source\OpenXRHMD\Private\OpenXRHMD.cpp:2886]
UE4Editor_OpenXRHMD!FOpenXRRenderBridge::Present() [D:\Build\++UE4\Sync\Engine\Plugins\Runtime\OpenXR\Source\OpenXRHMD\Private\OpenXRHMD_RenderBridge.cpp:15]
UE4Editor_D3D11RHI!FD3D11Viewport::PresentChecked() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Viewport.cpp:364]
UE4Editor_D3D11RHI!FD3D11Viewport::Present() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Viewport.cpp:637]
UE4Editor_D3D11RHI!FD3D11DynamicRHI::RHIEndDrawingViewport() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Windows\D3D11RHI\Private\D3D11Viewport.cpp:789]
UE4Editor_RHI!FRHICommand<FRHICommandEndDrawingViewport,FRHICommandEndDrawingViewportString1884>::ExecuteAndDestruct() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RHI\Public\RHICommandList.h:765]
UE4Editor_RHI!FRHICommandListExecutor::ExecuteInner_DoExecute() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:367]
UE4Editor_RHI!FRHICommandListExecutor::ExecuteInner() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:658]
UE4Editor_RHI!FRHICommandListExecutor::ExecuteList() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:708]
UE4Editor_RHI!FRHICommandList::EndDrawingViewport() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RHI\Private\RHICommandList.cpp:1616]
UE4Editor_SlateRHIRenderer!FSlateRHIRenderer::DrawWindow_RenderThread() [D:\Build\++UE4\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1155]
UE4Editor_SlateRHIRenderer!TEnqueueUniqueRenderCommandType<`FSlateRHIRenderer::DrawWindows_Private'::`39'::SlateDrawWindowsCommandName,<lambda_f9feabdceba9d88a5c7b2ca3d59100d9> >::DoTask() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:183]
UE4Editor_SlateRHIRenderer!TGraphTask<TEnqueueUniqueRenderCommandType<`FSlateRHIRenderer::DrawWindows_Private'::`39'::SlateDrawWindowsCommandName,<lambda_f9feabdceba9d88a5c7b2ca3d59100d9> > >::ExecuteTask() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:886]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:710]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:602]
UE4Editor_RenderCore!RenderingThreadMain() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:373]
UE4Editor_RenderCore!FRenderingThread::Run() [D:\Build\++UE4\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:509]
UE4Editor_Core!FRunnableThreadWin::Run() [D:\Build\++UE4\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:86]

I haven’t found the solution yet, but I narrowed it down. It is caused by external code in a plugin that I now have to debug.

Update, now with VBS 1.13.4 BETA, this crash no longer occurs. However, the video stream to the eyes gets messed up, as if some FOV was being impacted or something. Curious…

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.