Game Crash as Client in 5.6.* and 5.7

Hello everyone,

I am reporting a critical and 100% reproducible crash in the Unreal Engine’s Virtual Reality implementation that started with UE 5.6 and continues in UE 5.7. The project was stable in UE 5.5.4.

The crash is caused by a null pointer dereference attempt in the rendering thread, specifically within the code responsible for the Spectator Screen functionality.

Key Observation (The Issue):

The crash occurs exclusively when the Editor is launched as a Client in VR Preview. It runs stably when launched as a Server or Standalone.

Steps to Reproduce (Minimal Setup):

  1. Create a new VR Template.

  2. Make absolutely no code or Blueprint changes.

  3. In the Editor, go to Play > Advanced Settings and set the Net Mode to Play As Client. (Setting the player count is not required).

  4. Press Play in VR Preview. (I use my Meta Quest 3)

  5. The crash occurs immediately as the client attempts to start rendering to the HMD.

Technical Crash Details

The call stack clearly points to the Spectator Screen logic within the XRBase module, where it attempts to read from an invalid memory address (0xffffffffffffffff – typical for a null pointer access).

Error:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff

UnrealEditor_XRBase!FDefaultSpectatorScreenController::RenderSpectatorScreen_RenderThread() [D:\build\++UE5\Sync\Engine\Plugins\Runtime\XRBase\Source\XRBase\Private\DefaultSpectatorScreenController.cpp:210]

UnrealEditor_OpenXRHMD!FOpenXRHMD::RenderTexture_RenderThread() [D:\build\++UE5\Sync\Engine\Plugins\Runtime\OpenXR\Source\OpenXRHMD\Private\OpenXRHMD.cpp:4564]

UnrealEditor_SlateRHIRenderer!FSlateRHIRenderer::DrawWindow_RenderThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:868]

UnrealEditor_SlateRHIRenderer!FSlateRHIRenderer::DrawWindows_RenderThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1098]

UnrealEditor_SlateRHIRenderer!`FSlateRHIRenderer::DrawWindows_Private'::`76'::<lambda_3>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:1353]

UnrealEditor_RenderCore!ExecuteCommand() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1540]

UnrealEditor_RenderCore!UE::RenderCommandPipe::FCommandList::ConsumeCommands<`FRenderThreadCommandPipe::ExecuteCommands'::`2'::<lambda_1> >() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:431]

UnrealEditor_RenderCore!`FRenderThreadCommandPipe::EnqueueAndLaunch'::`5'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1924]

UnrealEditor_RenderCore!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(void),1> >::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:696]

UnrealEditor_Core!UE::Tasks::Private::FTaskBase::TryExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Tasks\TaskPrivate.h:518]

UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:791]

UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:680]

UnrealEditor_RenderCore!RenderingThreadMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:260]

UnrealEditor_RenderCore!FRenderingThread::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:393]

UnrealEditor_Core!FRunnableThreadWin::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]

Analysis: The crash happens because a critical texture variable (like SpectatorScreenTexture_RenderThread or a related Layerstexture) is nullptr when the rendering path attempts to access it. This indicates a failure in the initialization or threading synchronization of the OpenXR texture resources specifically when running in Client Net Mode.

Has anyone else experienced this specific crash or found a reliable way to stop it when running as a Client? Any help is appreciated!