Summary
I’m using “Lumen Hardware Raytracing” and disabled “Generate Mesh Distance Fields” and had a lot of GPU crashes in the editor and in standalone game/shipping build. This all of information I gathered from AI analysis over the last days:
Lumen hardware ray tracing intermittently causes a GPU page fault (DXGI_ERROR_DEVICE_HUNG, Aftermath status PageFault).
The faulting shader reads the index buffer of the hit geometry through its binding record:
RayTracingSceneMetadata for inline tracing, or hit group local root data for RayGen/ClosestHit.
That index buffer has already been released, between 11 frames and 3.6 seconds earlier.
The traversal itself produces a valid hit, so the TLAS/BLAS are intact. Only the per-geometry binding record is stale.
The stale reference lives much longer than async compute latency, which points to cached or persistent binding data.
The issue does not reproduce with r.RayTracing.PersistentSBT=0.
We therefore suspect that a persistent SBT record is not invalidated when a static mesh’s render data / index buffer is replaced or released.
Environment
- Engine: 5.8.3-58210709+++UE5+Release-5.8 (Launcher binary build)
- RHI: D3D12, SM6, bindless
- GPU: NVIDIA GeForce RTX 4090 (AD102)
- Driver: 617.14 (also seen with 616.92 and 610.88)
- OS: Windows 11 25H2, build 26200
- CPU / RAM: AMD Ryzen 9 7950X, 64 GB
- Occurs in: editor viewport, PIE (
-game), packaged Shipping
Relevant settings
r.RayTracing=True
r.Lumen.HardwareRayTracing=True
r.DynamicGlobalIlluminationMethod=1
r.ReflectionMethod=1
r.GenerateMeshDistanceFields=False
r.Shadow.Virtual.Enable=1
r.RayTracing.ResidentGeometryMemoryPoolSizeInMB=1024
Workarounds tested
| Setting | Result |
|---|---|
r.Lumen.HardwareRayTracing.Inline=0 |
Still crashes |
r.Lumen.HardwareRayTracing.Inline=1 |
Still crashes |
r.RayTracing.Geometry.SkeletalMeshes=0 + r.RayTracing.Geometry.SplineMeshes=0 |
Still crashes |
r.RayTracing.PersistentSBT=0 |
No crash so far, but a significant render thread cost and much higher latency in dense areas |
r.RayTracing.PersistentSBT.ForceAlwaysDirty=1 |
Similar cost |
What Type of Bug are you experiencing?
Rendering (Graphics / Niagara)
Steps to Reproduce
- Use a large World Partition map with Lumen hardware ray tracing enabled (settings above).
- Populate it with many procedurally generated, non-Nanite
UStaticMeshobjects with 16-bit indices.- Each mesh is a new
UStaticMeshcreated withBuildFromMeshDescriptions. - Each mesh is embedded in its actor’s package and assigned to a
UStaticMeshComponent.
- Each mesh is a new
- Editor: Repeatedly regenerate these meshes. Assign a new
UStaticMeshto the existing components and let the old mesh be garbage collected. The GPU crashes after tens of regenerations. - PIE / Standalone: Move through the map so that World Partition cells stream in. Many embedded meshes finish async compilation (
LogStaticMesh: Waiting on static mesh ... being ready before playing). The GPU crashes within a few minutes.
Expected Result
Static mesh render data can be replaced or released without crashing. Ray tracing binding records (persistent SBT / RayTracingSceneMetadata) never reference a released index or vertex buffer. They are updated or invalidated before the old buffers are freed.
Observed Result
The GPU device is removed with an MMU page fault in a Lumen HWRT shader. The shader reads the hit geometry’s index buffer, which was already released.
Crash 1: Editor, RayGen path (Inline=0)
- Occurred a few seconds after 3 static meshes were replaced (new
UStaticMesh, old one garbage collected). - Aftermath:
Error_DMA_PageFault, read,AddressTranslationError, VA0x2491D50000. - Resource tracking: no live resource or heap at that VA. All resources previously placed there were destroyed 3.64 s before the dump.
- Active shader:
LumenHardwareRayTracingMaterialCHS(ClosestHit, hash57ADF5F61BE024024D669464B44A539B). - DRED: compute queue, faulting op
ExecuteIndirectafter the last completedResourceBarrier. - Breadcrumbs (AsyncCompute):
LumenSceneLighting > DirectLighting (Offscreen shadows / Lights) > Radiosity.
Crash 2: PIE, inline path (Inline=1, skeletal and spline RT geometry disabled)
- Aftermath:
PageFault, read, VA0x1E23747000. - UE resource tracking:
Found 0 active heaps. The only released resource at that VA isShadow.Virtual.VisibleInstances, freed at frame 8679, 11 frames before the crash (frame 8690). The VA was reused after the original buffer was freed. - Active shader:
LumenRadiosityHardwareRayTracingCS(compute, hashDB61EC179B5DAC7A3AA30DDBD96B0B8C). - DRED: compute queue, faulting op
ExecuteIndirectafter the last completedResourceBarrier. - Breadcrumbs (AsyncCompute):
LumenSceneLighting > DirectLighting > Radiosity.
Attachments
Crash1_Editor_RayGenCHS/
Aftermath_decoded.txt decoded Aftermath dump (raw .nv-gpudmp no longer available)
57adf5f61be024024d669464b44a539b.pdb/.dxil shader symbols for the faulting CHS
Crash2_PIE_InlineCS/
D3D12.0.2026.10.07-14.29.16.nv-gpudmp raw Aftermath GPU dump
533923EAA119A20A-FABB075585459AE0.nvdbg Aftermath shader debug info
db61ec179b5dac7a3aa30ddbd96b0b8c.pdb/.dxil shader symbols for LumenRadiosityHardwareRayTracingCS
Aftermath_decoded.txt decoded dump incl. source call stack
GPUCrash_excerpt.log breadcrumbs, Aftermath, DRED, page-fault resource tracking
EfasimCpp_2.log full log of the crashing session
cvars_at_startup.txt RT/Lumen cvars at startup
CrashContext.runtime-xml, UEMinidump.dmp, Breadcrumbs_RHIThread_0.txt
Affects Versions
5.8
Platform(s)
Windows
For crash reports, include your callstack
GPU callstacks, decoded with Nsight nv-aftermath-format and the shader PDBs.
Crash 2: inline path (LumenRadiosityHardwareRayTracingCS, MMU fault, read)
Frame 0: LoadIndices16Bit <- faulting load
Frame 1: LoadTriangleBaseAttributes
Frame 2: LoadInlineRayTracingTriangleAttributes (RayTracing/TraceRayInlineD3D12.ush)
RayTracingSceneMetadata[RecordIndex].BindlessHitGroupSystemIndexBuffer
Frame 3: TraceLumenMinimalRay
Frame 4: TraceSurfaceCacheRay
Frame 5: LumenRadiosityHardwareRayTracing_INTERNAL
Frame 6: LumenRadiosityHardwareRayTracingCS
Crash 1: RayGen path (LumenHardwareRayTracingMaterialCHS, MMU fault, read, ray_tracing_01 @ 0x4b0)
LumenHardwareRayTracingMaterialCHS (Lumen/LumenHardwareRayTracingMaterials.usf)
-> ComputeWorldNormal(PrimitiveIndex(), GetClusterID())
-> LoadTriangleBaseAttributes(HitGroupSystemIndexBuffer, ..., HitGroupSystemVertexBuffer, ...) <- faulting load
CPU callstack: not applicable. The crash is detected by the RHI on device removal (D3D12Util.TerminateOnGPUCrash). The full minidump is attached.