Summary
Reproducible GPU crash in the parallel depth prepass after ~2 minutes: A packaged Development client faults on a render worker at a near-constant wall-clock time on two different machines, two GPUs, two driver versions, two RHIs and two engine versions. Thirteen candidate causes were eliminated with each console variable echoed back to confirm it applied.
What Type of Bug are you experiencing?
Rendering (Graphics / Niagara)
Steps to Reproduce
Reproduction
A networked client rendering ~200 server-driven skeletal actors, 423 static props and 13 NPCs in a purchased marketplace level. Nine of nine attempts reproduced.
Launch a packaged Development build against a level with several hundred replicated actors receiving transform updates at ~9 Hz.
Let it run. No player input is required — an idle session crashes identically to active play.
Fault occurs at ~2:00, on a background worker, inside the RHI.
Observed survival, one machine, consecutive runs
1:56 1:59 2:00 2:00 2:01 2:02 2:04 2:05 2:05
Expected Result
The client renders continuously without faulting. Parallel recording of the
depth prepass should not dereference invalid memory.
Observed Result
EXCEPTION_ACCESS_VIOLATION on a task-graph background worker inside the RHI,
during parallel recording of the depth prepass, at a near-constant ~2:00 of
wall-clock time.
Nine consecutive runs on one machine: 1:56, 1:59, 2:00, 2:00, 2:01, 2:02,
2:04, 2:05, 2:05.
The trigger scales with TIME, not with frames or rendering load. Reducing the
drawn skeletal-mesh count 6x RAISED the framerate, so the frame counter at the
fault rose from 6,571 to 8,059 — while the wall-clock time stayed at 2:02.
It also crashes while the player is completely idle, identically to active
play, so it is not driven by player input or camera movement.
Fault address is 0xffffffffffffffff on the desktop machine; 0x48 and 0x90 on
the laptop.
-d3ddebug and -d3d12gpuvalidation both report ZERO errors and ZERO warnings.
Affects Versions
5.8
Platform(s)
Windows
Upload an image
UE58-crash-logs.zip (7.23 MB)
For crash reports, include your callstack
EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
BharataClient.exe!FD3D12ContextCommon::BindDiagnosticBuffer()
BharataClient.exe!FD3D12DescriptorCache::SetSamplerTable()
BharataClient.exe!FD3D12CommandContext::RHISetShaderParameters()
BharataClient.exe!FRHICommandSetShaderParameters::Execute()
BharataClient.exe!FRHICommand<FRHICommandSetShaderParameters,
FRHICommandSetShaderParametersString1589>::ExecuteAndDestruct()
BharataClient.exe!FRHICommandListBase::Execute()
BharataClient.exe!FRHICommandListExecutor::FTranslateState::Translate_ExecuteCommandList()
BharataClient.exe!FRHICommandListExecutor::FTaskPipe::Execute()
BharataClient.exe!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(enum ENamedThreads::Type,
TRefCountPtr const &),0> >::ExecuteTask()
BharataClient.exe!UE::Tasks::Private::FTaskBase::TryExecuteTask()
BharataClient.exe!LowLevelTasks::FTask::ExecuteTask()
BharataClient.exe!LowLevelTasks::FScheduler::ExecuteTask()
BharataClient.exe!LowLevelTasks::FScheduler::WorkerLoop()
KERNEL32.DLL!UnknownFunction
Crash in runnable thread Background Worker #3
GPU breadcrumbs at the fault:
Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 2, Num: 3)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6571
Additional Notes
ENVIRONMENT — reproduces on two independent machines:
Machine A: RTX 3070 Ti Laptop (8 GB), driver 610.88 (32.0.16.1088)
UE 5.8.0 and 5.8.1 — survival 2:02 to 4:05
Machine B: RTX 3080 desktop, driver 610.74 (32.0.16.1074)
UE 5.8.1 — survival 1:56 to 2:05 across 9 runs
Both Game Ready and Studio driver branches tested on Machine A (NVIDIA ships
both from the same 610.88 build; engine reported an identical version string).
THE BREADCRUMB FOLLOWS WHATEVER FORCES THE DEPTH PREPASS — this misleads:
stock → PrePass DDM_AllOpaque (Forced by DBuffer)
r.Nanite.ProjectEnabled=0 → PrePass DDM_AllOpaque (Forced by DBuffer)
r.DBuffer=0 → PrePass DDM_AllOpaque (Forced by VirtualTexture)
rhi.UseSubmissionThread=0 → PrePass DDM_AllOpaque (Forced by DBuffer)
Disabling whichever subsystem forces the prepass simply hands that role to
another, and the breadcrumb changes accordingly. Reading that as “the crash
moved when I disabled X, therefore X is innocent” falsely exonerates every
feature in turn. The fault follows the prepass itself, not its forcer.
ELIMINATED — every cvar echoed back via -ExecCmds to confirm it applied
before the run was counted:
Nanite r.Nanite.ProjectEnabled=0 still crashes
Deferred decals r.DBuffer=0 still crashes
Submission thread rhi.UseSubmissionThread=0 still crashes
RHI D3D12 and Vulkan (SM5, SM6) both crash
Engine version 5.8.0 → 5.8.1 still crashes
GPU / driver 2 GPUs, 2 drivers, GR + Studio still crashes
Editor vs packaged both both crash
Rendering workload 6x fewer meshes; foliage off still crashes
Player activity idle vs continuous combat identical
API misuse -d3ddebug, -d3d12gpuvalidation 0 errors
VULKAN — same project, same repro, ~4x longer survival (8:17 vs ~2:02),
fault inside the driver:
nvoglv64.dll!UnknownFunction
nvoglv64.dll!UnknownFunction
UnrealEditor-VulkanRHI.dll!UnknownFunction
PROJECT SHAPE: a networked client rendering ~200 server-driven skeletal
actors, 423 static props and 13 NPCs, receiving transform updates at ~9 Hz.
~12 GB cooked content with Nanite, Lumen and virtual textures.
WHAT WE CANNOT RULE OUT: our own code. We eliminated object lifetime (all
actor references are TObjectPtr or weak, verified with runtime counters) and
rendering workload (above), and validation layers are clean — but this is a
large project and we are not claiming certainty.
ATTACHED: 7 full logs, one per eliminated variable. Each contains engine init,
GPU/driver banner, per-10s application telemetry, breadcrumbs and callstack.
Reproduced on both 5.8.0 CL 55116800 and 5.8.1 CL 56057345
========================================================================
RAW LOG EVIDENCE — 7 runs, one per eliminated variable
UE 5.8 — GPU CRASH IN PARALLEL DEPTH PREPASS — CONSOLIDATED LOG EVIDENCE
Seven runs, one per eliminated variable. Full logs available on request.
— 01 STOCK ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.Nanite.ProjectEnabled:1
visible meshes: mobs=196(60 drawn)
TIMELINE:
joined [2026.08.22-11.54.31:919]
crashed [2026.08.22-11.56.33:195]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-11.56.33:193][819]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 0, Num: 1)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6817
— 02 NANITE DISABLED ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.Nanite.ProjectEnabled:0
visible meshes: mobs=196(60 drawn)
TIMELINE:
joined [2026.08.22-12.19.52:635]
crashed [2026.08.22-12.21.54:370]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-12.21.54:370][573]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 2, Num: 3)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6571
— 03 DBUFFER DISABLED ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.DBuffer:0
visible meshes: mobs=195(60 drawn)
TIMELINE:
joined [2026.08.22-12.24.23:565]
crashed [2026.08.22-12.26.25:330]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-12.26.25:330][867]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 2, Num: 3)
- PrePass DDM_AllOpaque (Forced by VirtualTexture)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6865
— 04 SUBMISSION THREAD OFF ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
rhi.UseSubmissionThread = “0”
visible meshes: mobs=194(60 drawn)
TIMELINE:
joined [2026.08.22-12.28.56:773]
crashed [2026.08.22-12.30.58:523]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-12.30.58:523][985]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 6, Num: 8)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6983
— 05 6x FEWER MESHES ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.Nanite.ProjectEnabled:1
visible meshes: mobs=195(10 drawn)
TIMELINE:
joined [2026.08.22-12.34.40:599]
crashed [2026.08.22-12.36.42:413]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-12.36.42:413][ 61]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 4, Num: 5)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 8059
— 06 FOLIAGE OFF ---------------------------------------------------------
Engine Version: 5.8.0-55116800+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.Nanite.ProjectEnabled:1
visible meshes: mobs=194(60 drawn)
TIMELINE:
joined [2026.08.22-12.37.35:355]
crashed [2026.08.22-12.39.37:131]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-12.39.37:131][839]LogRHI: Error: Breadcrumbs ‘Parallel’
- ParallelDraw (Index: 1, Num: 2)
- PrePass DDM_AllOpaque (Forced by DBuffer)
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
- Frame 6837
— 07 LATEST BUILD ---------------------------------------------------------
Engine Version: 5.8.1-56057345+++UE5+Release-5.8
Found D3D12 adapter 0: NVIDIA GeForce RTX 3080
Driver Version: 610.74 (internal:32.0.16.1074, unified:610.74)
CVAR UNDER TEST (echoed back to prove it applied):
r.Nanite.ProjectEnabled:1
visible meshes: mobs=193(60 drawn)
TIMELINE:
joined [2026.08.22-14.13.39:927]
crashed [2026.08.22-14.15.35:508]
reading address 0xffffffffffffffff
GPU BREADCRUMB:
[2026.08.22-14.15.35:508][880]LogRHI: Error: Breadcrumbs ‘Parallel’
- Nanite::BasePass
- NaniteBasePass
- BasePass
- Scene
- RenderGraphExecute - /ViewFamilies
- SceneRender - ViewFamilies
========================================================================
SYMBOLICATED CALLSTACK (packaged Development build):
BharataClient.exe!FD3D12ContextCommon::BindDiagnosticBuffer()
BharataClient.exe!FD3D12DescriptorCache::SetSamplerTable()
BharataClient.exe!FD3D12CommandContext::RHISetShaderParameters()
BharataClient.exe!FRHICommandSetShaderParameters::Execute()
BharataClient.exe!FRHICommand<FRHICommandSetShaderParameters,FRHICommandSetShaderParametersString1589>::ExecuteAndDestruct()
BharataClient.exe!FRHICommandListBase::Execute()
BharataClient.exe!FRHICommandListExecutor::FTranslateState::Translate_ExecuteCommandList()
BharataClient.exe!FRHICommandListExecutor::FTaskPipe::Execute()
BharataClient.exe!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(enum ENamedThreads::Type,TRefCountPtr const & __ptr64),0> >::ExecuteTask()
BharataClient.exe!UE::Tasks::Private::FTaskBase::TryExecuteTask()
BharataClient.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __ptr64 __cdecl(bool),48>::TTaskDelegateImpl<LowLevelTasks::FTask::Init<UE::Tasks::Private::FTaskBase::Init’::2'::<lambda_1> >'::15’::<lambda_1>,0>::CallAndMove()
BharataClient.exe!LowLevelTasks::FTask::ExecuteTask()