I did this analysis with Claude, this is a summary of the troubleshooting I did with various proton versions and steam launch parameters. Since the more recent update of drivers the game stopped functioning completely - while it was working on 595.58 + older proton (one of the April releases, cannot remember now which exactly). I could switch back to nvidia-dkms drivers and try back the old version with flags I had.
All in all, it's baffling to me that nvidia is just ignoring this on linux when they fixed these lumen / nanite issues asap when they occured on windows.
Anyways, summary below. If you need me to run more diagnostic / logs let me know and I will attach them to this issue.
Hit the same issue on RTX 5090. The novel signal I want to add to this thread is that VKD3D-Proton's existing per-game GZW workaround is firing, but the crash still reproduces deterministically inside Nanite::ShadeBinning. Bisecting the renderer top-down identifies which UE5 subsystem hangs the GPU at each stage.
| CPU | AMD Ryzen 9 9950X3D |
| GPU | NVIDIA GeForce RTX 5090 (Blackwell GB202), 32 GiB |
| VBIOS | 98.02.2E.00.03 |
| Driver | nvidia 595.71.05 |
| Kernel | 7.0.9-1-cachyos-bore (CachyOS BORE) |
| Proton | proton-cachyos 11.0-20260506-slr |
| VKD3D-Proton | bundled with above; VK_EXT_descriptor_heap enabled (32/32 size, raw uav counter on) |
| Game | Gray Zone Warfare, v. 4.3.0 |
| Exe | GZWClientSteam-Win64-Shipping.exe (hash f779e6f4c254f6a8) |
| Resolution | 3440×1440, fullscreen exclusive (FullscreenMode=0) |
From the Proton log at init, the per-game workaround added in 0f5e58d fires correctly:
info:vkd3d-proton:vkd3d_instance_apply_application_workarounds:
Program name: "GZWClientSteam-Win64-Shipping.exe" (hash: f779e6f4c254f6a8)
info:vkd3d-proton:vkd3d_instance_apply_application_workarounds:
Detected game GZWClientSteam-Win64-Shipping.exe, adding 2 configs, removing 0 configs.
info:vkd3d-proton:vkd3d_instance_apply_application_workarounds:
Detected game GZWClientSteam-Win64-Shipping.exe, adding shader quirks for specific shaders.
So the Root CBV / shader-hash quirks land, but the crash still happens. The existing quirks are insufficient for the 5090 / driver 595.71.05 / build 4.3.0 combination.
Kernel side, consistent across every run:
NVRM: Xid (PCI:0000:01:00): 109, pid=N, name=GameThread,
channel 0x00000019, errorString CTX SWITCH TIMEOUT, Info 0x3c030
(Info low bits vary slightly per run; channel is stable at 0x19 for the Nanite path. Earlier, with Lumen+DLSS-G still on, the failing channel was 0x27 and Info 0x3c803c — different command queue, different rendering subsystem.)
UE5 side:
LogD3D12RHI: Error: GPU crash detected:
- Device 0 Removed: DXGI_ERROR_DEVICE_REMOVED
LogRHI: Error: Active GPU breadcrumbs:
(ID: 0x80000347) [Active] Frame 1
(ID: 0x800004f3) [Active] FRDGBuilder::Execute
(ID: 0x8000042f) [Active] Scene
(ID: 0x8000045a) [Active] BasePass
(ID: 0x8000045c) [Active] NaniteBasePass
(ID: 0x8000045d) [Active] Nanite::BasePass
(ID: 0x8000045e) [Active] Nanite::ShadeBinning ← GPU dies here
LogNvidiaAftermath: Error:
Legacy Aftermath GPU Crash:
GFSDK_Aftermath_GetDeviceStatus failed: 0xbad00002
GFSDK_Aftermath_GetPageFaultInformation failed: 0xbad00002
LogD3D12RHI: Error: GPU Crashed or D3D Device Removed.
The GPU dies inside Nanite::ShadeBinning — Nanite's material-binning compute pass — during the very first scene-rendering frame after the splash sequence.
Starting from the default-graphics crash and disabling subsystems one at a time. Every step changed the failure point in a way that's visible in the UE breadcrumb log — making clear that each subsystem can hang the GPU independently on this hardware.
| Stage | Action | Breadcrumb at crash | Outcome |
|---|---|---|---|
| 0 | Default settings | All [Not Started] — GPU dies before first frame |
Crash before any rendering |
| 1 | sg.GlobalIlluminationQuality=0 |
Lumen GI passes (LumenScreenProbeGather, LumenSceneUpdate) gone, still [Not Started] |
Same class of crash, slightly later |
| 2 | + sg.ReflectionQuality=0 |
All Lumen passes gone (no more LumenReflections, Submit Lumen surface cache feedback, Nanite::RasterizeLumenCards); ScreenSpaceReflections remains |
Crash moves; Lumen confirmed as one independent trigger |
| 3 | + DLSSFrameGeneration=Off (was On4X / 4× MFG) |
DLSS-G pacer-fence timeouts (Wait on gpu fence in 'pacer' timed out after 500ms) gone |
Crash moves into [Active] Nanite::ShadeBinning |
| 4 | + VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader,VK_NV_raw_access_chains |
vkd3d log confirms Extension "VK_EXT_mesh_shader" is disabled (×many); reaches Frame 6 instead of Frame 1 |
Same breadcrumb wall; Nanite compute path unaffected |
| 5 | + -execcmds=r.Nanite 0 |
Passed through (visible in Proton command-line); breadcrumb still shows NaniteBasePass [Active] |
CVar likely read-at-init or EAC-blocked; no effect |
| 6 | + Engine.ini [SystemSettings] r.Nanite=0 / r.Nanite.Rasterization=0 / r.Nanite.AllowComputeMaterials=0 / r.Nanite.AllowMaskedMaterials=0 / r.Nanite.AsyncRasterization=0 / r.Nanite.Streaming=0 |
No effect; identical breadcrumbs and log size as stage 5 | Nanite is project-setting-locked in cooked content; CVar overrides don't reach |
Independent triggers seen across the bisection: Lumen GI, Lumen Reflections (Lumen scene maintenance), DLSS Frame Gen (On4X), and now Nanite compute binning. Each one independently capable of hanging the GPU on this hardware/driver combo.
Even after disabling DLSS-G, Streamline still spams the same NGX errors at startup. Probably unrelated to the crash (these fire ~10s before GPU death, after which other subsystems crash on their own) but worth noting:
LogStreamlineAPI: Error: NVSDK_NGX_UpdateFeature failed 0xbad00002
LogStreamlineAPI: Error: Failed to create process C:\Windows\System32\nvngx_update.exe -cmsid 0 -feature sl_reflex_0 -api bootstrap
LogStreamlineAPI: Warning: Detected base interface 'ID3D12CommandQueue' while expecting SL proxy
— please use slUpgradeDevice to obtain SL proxies for DXGI/D3D interfaces
LogStreamlineAPI: Warning: Invalid backbuffer resource extent (3440 x 1440)
Happy to provide:
PROTON_LOG=1, ~12 MB compressed)~/.../GZW/Saved/Crashes/UECC-Windows-* (multiple from this session)fozpipelinesv6/) if helpful for hash matchingLet me know what would be most useful for triage.
These LLM analysis usually just add more noise rather than being helpful.
If you've got any practically verified helpful information to add to the original report then just post that in short.
I mean it's a summary of observation of logs I pulled out during different runs, proton versions, launch options, should be helpful to the person that picks this up to try and identify the problem considering they do not own all the different hardware ppl are referencing in these.
Linking this here as I managed to find a workaround for the time being until nvidia decides to patch this problem https://github.com/HansKristian-Work/vkd3d-proton/issues/3048#issuecomment-4512128535
proton 3.0x1 2026-04PROTON_LOG=1`,x1 2026-05VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader,VK_NV_raw_access_chains`x1 2026-050x80000347x1 2026-050x8000042fx1 2026-050x8000045ax1 2026-050x8000045cx1 2026-050x8000045dx1 2026-050x8000045ex1 2026-050x800004f3x1 2026-05
GPU crash (D3D12 device removal) on RTX 5070 Ti (Blackwell/GB203) under Linux/Proton.
Setup: RTX 5070 Ti, nvidia-open 595.58.03, proton-cachyos 10.0-20260408, VKD3D-Proton 3.0.0, CachyOS (Kernel 7.0.0-1-cachyos-bore)
Software information
Name of the game, settings used etc.
System information
Log files
Please attach Proton or Wine logs as a text file:
steam-2479810.log
Maybe this will help, too:
GZW.log
UEMinidump_to_text.txt