Hi,
I have been investigating a highly reproducible GPU hang in Cyberpunk 2077 and have now collected enough information that I believe it may be useful for the REDengine/rendering team rather than continuing with generic troubleshooting.
I am not claiming that this is definitely a Cyberpunk/REDengine bug. The root cause could still be the NVIDIA driver, shader compiler, firmware, hardware-specific behavior, or an interaction between these components.
However, the failure has become extremely reproducible, and I have been able to identify the exact Compute shaders that were active during several independent GPU hangs.
GPU: PNY GeForce RTX 5070 12GB Overclocked Triple Fan
SKU: VCG507012TFXPB1-O
GPU: NVIDIA GB205-A
VBIOS: 98.05.36.00.CB
CPU: AMD Ryzen 7 5700X
RAM: 32 GB DDR4-3200
PSU: 850 W 80 Plus Gold
OS: Windows 11 Pro, build 26200
Game: Cyberpunk 2077 Steam, patch 2.31
Mods: None
The GPU is stable in conventional stress tests.
OCCT GPU load reaches approximately 247 W without errors, and VRAM/system memory testing also completes without errors.
Other DX12 games generally work correctly.
Post edited to compress the info -- SigilFey
I have been investigating a highly reproducible GPU hang in Cyberpunk 2077 and have now collected enough information that I believe it may be useful for the REDengine/rendering team rather than continuing with generic troubleshooting.
I am not claiming that this is definitely a Cyberpunk/REDengine bug. The root cause could still be the NVIDIA driver, shader compiler, firmware, hardware-specific behavior, or an interaction between these components.
However, the failure has become extremely reproducible, and I have been able to identify the exact Compute shaders that were active during several independent GPU hangs.
System
GPU: PNY GeForce RTX 5070 12GB Overclocked Triple Fan
SKU: VCG507012TFXPB1-O
GPU: NVIDIA GB205-A
VBIOS: 98.05.36.00.CB
CPU: AMD Ryzen 7 5700X
RAM: 32 GB DDR4-3200
PSU: 850 W 80 Plus Gold
OS: Windows 11 Pro, build 26200
Game: Cyberpunk 2077 Steam, patch 2.31
Mods: None
The GPU is stable in conventional stress tests.
OCCT GPU load reaches approximately 247 W without errors, and VRAM/system memory testing also completes without errors.
Other DX12 games generally work correctly.
Main failure
Cyberpunk 2077 repeatedly crashes very early, frequently around the main menu / UI initialization.
The game reports:
DXGI_ERROR_DEVICE_HUNG
0x887A0006
REDengine crash reports consistently show:
GpuCrashed = true
Windows simultaneously records:
LiveKernelEvent 141
corresponding to:
VIDEO_ENGINE_TIMEOUT_DETECTED
and I also see:
nvlddmkm Event 153
around the time of the GPU hang.
DRED consistently reports:
PageFaultVA = 0
so I am not seeing a conventional GPU virtual-address page fault.
The failure has reproduced across multiple NVIDIA drivers, including:
591.74
591.86
610.62
610.88
Windows WATCHDOG dumps show BugCheck Parameter 2 inside nvlddmkm.sys.
Relative offsets observed:
591.74 → nvlddmkm + 0x19AED90
591.86 → nvlddmkm + 0x19AFC40
610.62 → nvlddmkm + 0x1957E60
610.88 → nvlddmkm + 0x1959FA0
On 610.88, multiple independent failures repeatedly landed at exactly:
nvlddmkm + 0x1959FA0
I understand that without NVIDIA private symbols this does not prove that the offsets correspond to the same internal function.
I have already tested:
Clean Windows installation
Clean NVIDIA driver installations
Multiple NVIDIA driver branches
Game reinstall and file verification
Fresh Windows user profile
XMP disabled
CPU and GPU at stock settings
GPU undervolt / underclock testing
NVIDIA Debug Mode
PCIe Gen3 instead of Gen4
ReBAR enabled
HAGS disabled
Single-monitor configuration
Dual-monitor configuration
Low graphics preset
Ray tracing enabled and disabled
Different resolutions and refresh rates
TDR registry testing
Background applications and overlays removed
Visual C++ reinstall
Windows repair commands
Direct launch of Cyberpunk2077.exe
Memory and VRAM stress testing
No mods
The crash remains reproducible.
This is where the behavior became more interesting.
Repeated traces show the REDengine breadcrumb:
AsyncComputeDuringShadowmaps: In progress
while subsequent stages remain:
Not started
including stages such as:
Lighting
Skin_Post_and_Forward_Opaque
HologramDepth_and_Distortion
DecoupledParticleLighting
Transparents
PostFX
RenderFinal2D
EndRender
I then see approximately five seconds with no meaningful D3D12 progress.
During this period:
GPU utilization reports approximately 100%
GPU power drops significantly
GPU clocks remain high
GPU temperature remains low, around the mid-40°C range
VRAM usage is only around 3 GB
Then:
nvlddmkm Event 153
followed by:
LiveKernelEvent 141
The recurring sequence is approximately:
AsyncComputeDuringShadowmaps
→ Compute queue stops progressing
→ ~5 second D3D12 progress gap
→ nvlddmkm Event 153
→ GPU engine timeout / 0x141
I am not assuming that AsyncComputeDuringShadowmaps itself is necessarily faulty. It may simply be the workload still active when the lower-level hang occurs.
I also ran GPU-Based Validation.
It generated errors including:
GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH
and:
CLEAR_UNORDERED_VIEW_INVALID_DESCRIPTOR_HANDLE
with activity associated with:
DecoupledParticleLighting
I do not consider these messages proof of the cause of the 0x141 timeout, but I believe they may be relevant to the rendering team.
I collected multiple .nv-gpudmp files.
The dumps consistently report:
Device state: Hung
Engine reset occurred: Yes
Adapter reset occurred: No
API: Direct3D 12
GPU: GB205-A
Driver: 610.88
Four independent crashes produced the following active Compute shader PCs.
Shader hash:
89A74474EB58FD47
GPU PC:
compute_01 @ 0x14E0
Shader size:
5632 bytes
Shader hash:
4676B8ED54260869
GPU PC:
compute_01 @ 0x0A90
Shader size:
3072 bytes
Again:
4676B8ED54260869
compute_01 @ 0x0A90
Again:
4676B8ED54260869
compute_01 @ 0x0A90
A later crash captured through the external NVIDIA Aftermath Monitor also reproduced:
4676B8ED54260869
compute_01 @ 0x0A90
Therefore, the exact same Compute shader and GPU PC have reproduced repeatedly across independent failures.
All of these Aftermath snapshots also reported the unique active PC on:
GPC 2 / TPC 4
I am not interpreting this as proof of a defective physical GPC/TPC, since scheduling behavior could also explain the repeated location.
To rule out stale or corrupted compiled shaders, I performed a clean recompilation test.
I:
disabled NVIDIA shader cache
rebooted
cleared DXCache
cleared D3DSCache
confirmed both caches contained zero files
enabled NVIDIA Aftermath shader debug generation before launching the game
disabled REDengine's internal Aftermath capture using ForceOff=1
used the external NVIDIA Aftermath Monitor
The external monitor captured the GPU hang successfully.
However, no .nvdbg file was generated.
Most importantly, after completely clearing the caches and forcing recompilation, the crash still reproduced:
4676B8ED54260869
at:
compute_01 @ 0x0A90
This makes a stale/corrupted NVIDIA shader cache unlikely.
Since .nvdbg was unavailable, I investigated the game's shader caches.
I found DXBC containers inside:
shader_final.cache
and:
staticshader_final.cache
The totals were:
shader_final.cache → 19,037 DXBC containers
staticshader_final.cache → 913 DXBC containers
Total:
19,950 shader binaries
I extracted all 19,950 containers without modifying the original game files.
I then added the extracted directory to Nsight Graphics → Shader Binaries.
Nsight successfully resolved the exact binaries corresponding to the shaders seen in the crash dumps.
For:
4676B8ED54260869
Nsight resolved:
static_00440_0x6195C2.dxbc
For:
89A74474EB58FD47
Nsight resolved:
static_00577_0x954EF2.dxbc
Both binaries therefore originate from:
staticshader_final.cache
I disassembled the shader using Microsoft's official:
dxc.exe -dumpbin
It is:
Compute Shader Model 6.0
NumThreads = (8,8,1)
64 threads per group.
Resources:
cb6
t0 = Texture2D<float>
u0 = RWTexture2D
u1 = RWTexture2D
The shader reads four source texture values per thread and performs what appears to be a tiled min/max or depth-related reduction.
It uses groupshared/TGSM memory and performs a reduction across the thread group.
The reduction contains:
full thread-group synchronization
followed by progressively smaller participating thread sets:
32 → 16 → 8 → 4 → 2
with group-memory barriers between stages.
There is no unbounded/infinite loop in this shader.
The second shader is functionally different.
It is also:
Compute Shader Model 6.0
but uses:
NumThreads = (2,2,32)
128 threads per group.
Resources:
cb6
s0 = Sampler
t0 = TextureCube
t1 = StructuredBuffer
u1 = RWTexture2D
It uses a groupshared array containing 384 floats.
The shader processes data from the StructuredBuffer and TextureCube and then performs another shared-memory reduction.
Its reduction pattern is again similar:
full group synchronization
→ shared-memory reduction
→ smaller participating thread subsets
including:
32 → 16 → 8 → 4
with group-memory barriers between stages.
This shader does contain a loop over the StructuredBuffer, but its exit condition is bounded by the buffer element count.
The two shaders do very different work.
However, both share a very similar execution pattern:
Compute Shader Model 6.0
groupshared / TGSM memory
thread-group synchronization
shared-memory reduction
progressively smaller participating thread subsets
group-memory barriers
final UAV texture writes
This makes me wonder whether the important part is not one particular shader, but a shared REDengine Compute pattern or helper used by multiple shaders.
The repeated 4676B8ED54260869 @ 0xA90 is still the dominant signature, but the earlier 89A74474EB58FD47 @ 0x14E0 appears to exercise a structurally similar shared-memory reduction.
I cannot map the native Aftermath GPU PCs directly to individual DXIL instructions because I do not have the .nvdbg information.
CDPR presumably has access to the shader source and build/debug information, so this is one of the main reasons I am posting here.
If somebody from the REDengine/rendering team sees this, I would particularly like to know:
I can provide:
NVIDIA Nsight Aftermath .nv-gpudmp files
Aftermath JSON exports
Windows WATCHDOG .dmp files
ETW traces
REDengine crash reports
the exact two DXBC shader binaries
DXIL disassemblies of both shaders
GPU-Based Validation logs
complete crash packages
I would be happy to provide the full material if someone from CDPR's rendering team wants to investigate this further.
Thanks.
The game reports:
DXGI_ERROR_DEVICE_HUNG
0x887A0006
REDengine crash reports consistently show:
GpuCrashed = true
Windows simultaneously records:
LiveKernelEvent 141
corresponding to:
VIDEO_ENGINE_TIMEOUT_DETECTED
and I also see:
nvlddmkm Event 153
around the time of the GPU hang.
DRED consistently reports:
PageFaultVA = 0
so I am not seeing a conventional GPU virtual-address page fault.
Drivers tested
The failure has reproduced across multiple NVIDIA drivers, including:
591.74
591.86
610.62
610.88
Windows WATCHDOG dumps show BugCheck Parameter 2 inside nvlddmkm.sys.
Relative offsets observed:
591.74 → nvlddmkm + 0x19AED90
591.86 → nvlddmkm + 0x19AFC40
610.62 → nvlddmkm + 0x1957E60
610.88 → nvlddmkm + 0x1959FA0
On 610.88, multiple independent failures repeatedly landed at exactly:
nvlddmkm + 0x1959FA0
I understand that without NVIDIA private symbols this does not prove that the offsets correspond to the same internal function.
Troubleshooting already completed
I have already tested:
Clean Windows installation
Clean NVIDIA driver installations
Multiple NVIDIA driver branches
Game reinstall and file verification
Fresh Windows user profile
XMP disabled
CPU and GPU at stock settings
GPU undervolt / underclock testing
NVIDIA Debug Mode
PCIe Gen3 instead of Gen4
ReBAR enabled
HAGS disabled
Single-monitor configuration
Dual-monitor configuration
Low graphics preset
Ray tracing enabled and disabled
Different resolutions and refresh rates
TDR registry testing
Background applications and overlays removed
Visual C++ reinstall
Windows repair commands
Direct launch of Cyberpunk2077.exe
Memory and VRAM stress testing
No mods
The crash remains reproducible.
REDengine / ETW trace
This is where the behavior became more interesting.
Repeated traces show the REDengine breadcrumb:
AsyncComputeDuringShadowmaps: In progress
while subsequent stages remain:
Not started
including stages such as:
Lighting
Skin_Post_and_Forward_Opaque
HologramDepth_and_Distortion
DecoupledParticleLighting
Transparents
PostFX
RenderFinal2D
EndRender
I then see approximately five seconds with no meaningful D3D12 progress.
During this period:
GPU utilization reports approximately 100%
GPU power drops significantly
GPU clocks remain high
GPU temperature remains low, around the mid-40°C range
VRAM usage is only around 3 GB
Then:
nvlddmkm Event 153
followed by:
LiveKernelEvent 141
The recurring sequence is approximately:
AsyncComputeDuringShadowmaps
→ Compute queue stops progressing
→ ~5 second D3D12 progress gap
→ nvlddmkm Event 153
→ GPU engine timeout / 0x141
I am not assuming that AsyncComputeDuringShadowmaps itself is necessarily faulty. It may simply be the workload still active when the lower-level hang occurs.
D3D12 GPU-Based Validation
I also ran GPU-Based Validation.
It generated errors including:
GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH
and:
CLEAR_UNORDERED_VIEW_INVALID_DESCRIPTOR_HANDLE
with activity associated with:
DecoupledParticleLighting
I do not consider these messages proof of the cause of the 0x141 timeout, but I believe they may be relevant to the rendering team.
NVIDIA Nsight Aftermath
I collected multiple .nv-gpudmp files.
The dumps consistently report:
Device state: Hung
Engine reset occurred: Yes
Adapter reset occurred: No
API: Direct3D 12
GPU: GB205-A
Driver: 610.88
Four independent crashes produced the following active Compute shader PCs.
Crash 1
Shader hash:
89A74474EB58FD47
GPU PC:
compute_01 @ 0x14E0
Shader size:
5632 bytes
Crash 2
Shader hash:
4676B8ED54260869
GPU PC:
compute_01 @ 0x0A90
Shader size:
3072 bytes
Crash 3
Again:
4676B8ED54260869
compute_01 @ 0x0A90
Crash 4
Again:
4676B8ED54260869
compute_01 @ 0x0A90
A later crash captured through the external NVIDIA Aftermath Monitor also reproduced:
4676B8ED54260869
compute_01 @ 0x0A90
Therefore, the exact same Compute shader and GPU PC have reproduced repeatedly across independent failures.
All of these Aftermath snapshots also reported the unique active PC on:
GPC 2 / TPC 4
I am not interpreting this as proof of a defective physical GPC/TPC, since scheduling behavior could also explain the repeated location.
Shader cache / recompilation test
To rule out stale or corrupted compiled shaders, I performed a clean recompilation test.
I:
disabled NVIDIA shader cache
rebooted
cleared DXCache
cleared D3DSCache
confirmed both caches contained zero files
enabled NVIDIA Aftermath shader debug generation before launching the game
disabled REDengine's internal Aftermath capture using ForceOff=1
used the external NVIDIA Aftermath Monitor
The external monitor captured the GPU hang successfully.
However, no .nvdbg file was generated.
Most importantly, after completely clearing the caches and forcing recompilation, the crash still reproduced:
4676B8ED54260869
at:
compute_01 @ 0x0A90
This makes a stale/corrupted NVIDIA shader cache unlikely.
Extracting the actual REDengine shader binaries
Since .nvdbg was unavailable, I investigated the game's shader caches.
I found DXBC containers inside:
shader_final.cache
and:
staticshader_final.cache
The totals were:
shader_final.cache → 19,037 DXBC containers
staticshader_final.cache → 913 DXBC containers
Total:
19,950 shader binaries
I extracted all 19,950 containers without modifying the original game files.
I then added the extracted directory to Nsight Graphics → Shader Binaries.
Nsight successfully resolved the exact binaries corresponding to the shaders seen in the crash dumps.
For:
4676B8ED54260869
Nsight resolved:
static_00440_0x6195C2.dxbc
For:
89A74474EB58FD47
Nsight resolved:
static_00577_0x954EF2.dxbc
Both binaries therefore originate from:
staticshader_final.cache
DXIL analysis – shader 4676B8ED54260869
I disassembled the shader using Microsoft's official:
dxc.exe -dumpbin
It is:
Compute Shader Model 6.0
NumThreads = (8,8,1)
64 threads per group.
Resources:
cb6
t0 = Texture2D<float>
u0 = RWTexture2D
u1 = RWTexture2D
The shader reads four source texture values per thread and performs what appears to be a tiled min/max or depth-related reduction.
It uses groupshared/TGSM memory and performs a reduction across the thread group.
The reduction contains:
full thread-group synchronization
followed by progressively smaller participating thread sets:
32 → 16 → 8 → 4 → 2
with group-memory barriers between stages.
There is no unbounded/infinite loop in this shader.
DXIL analysis – shader 89A74474EB58FD47
The second shader is functionally different.
It is also:
Compute Shader Model 6.0
but uses:
NumThreads = (2,2,32)
128 threads per group.
Resources:
cb6
s0 = Sampler
t0 = TextureCube
t1 = StructuredBuffer
u1 = RWTexture2D
It uses a groupshared array containing 384 floats.
The shader processes data from the StructuredBuffer and TextureCube and then performs another shared-memory reduction.
Its reduction pattern is again similar:
full group synchronization
→ shared-memory reduction
→ smaller participating thread subsets
including:
32 → 16 → 8 → 4
with group-memory barriers between stages.
This shader does contain a loop over the StructuredBuffer, but its exit condition is bounded by the buffer element count.
Interesting common pattern
The two shaders do very different work.
However, both share a very similar execution pattern:
Compute Shader Model 6.0
groupshared / TGSM memory
thread-group synchronization
shared-memory reduction
progressively smaller participating thread subsets
group-memory barriers
final UAV texture writes
This makes me wonder whether the important part is not one particular shader, but a shared REDengine Compute pattern or helper used by multiple shaders.
The repeated 4676B8ED54260869 @ 0xA90 is still the dominant signature, but the earlier 89A74474EB58FD47 @ 0x14E0 appears to exercise a structurally similar shared-memory reduction.
I cannot map the native Aftermath GPU PCs directly to individual DXIL instructions because I do not have the .nvdbg information.
CDPR presumably has access to the shader source and build/debug information, so this is one of the main reasons I am posting here.
What I would like CDPR to check
If somebody from the REDengine/rendering team sees this, I would particularly like to know:
- Can shader hash 4676B8ED54260869 be mapped internally to its REDengine shader/pass name?
- Can shader hash 89A74474EB58FD47 be mapped internally as well?
- Is 4676B8ED54260869 associated with AsyncComputeDuringShadowmaps or another pass active around that breadcrumb?
- Is the common groupshared/TGSM reduction + barrier pattern in these two shaders part of a shared REDengine helper or shader implementation?
- Are the GPU-Based Validation messages involving DecoupledParticleLighting expected, or could they indicate a descriptor/resource-state problem?
- Has anything similar been observed internally on RTX 50-series / Blackwell GPUs?
- Would the REDengine/rendering team be interested in the original .nv-gpudmp, WATCHDOG dumps, ETW traces, DXBC binaries, or DXIL disassembly?
Files available
I can provide:
NVIDIA Nsight Aftermath .nv-gpudmp files
Aftermath JSON exports
Windows WATCHDOG .dmp files
ETW traces
REDengine crash reports
the exact two DXBC shader binaries
DXIL disassemblies of both shaders
GPU-Based Validation logs
complete crash packages
I would be happy to provide the full material if someone from CDPR's rendering team wants to investigate this further.
Thanks.
Post edited to compress the info -- SigilFey
Last edited by a moderator:


