protonscr

Cyberpunk 2077 (2.5 Edgerunners 2): vkd3d_queue deadlocks inside winevulkan during streaming on RADV/gfx1201

vkd3dopen
HansKristian-Work/vkd3d-proton#3412 · opened 2026-10-26 by sjaccaud · updated 2026-10-28 · 4 comments · github
Ssjaccaud 2026-10-26 github

Cyberpunk 2077 (2.5 "Edgerunners 2") — reproducible queue deadlock under streaming on RADV/gfx1201

Venue: https://github.com/HansKristian-Work/vkd3d-proton/issues (cross-reference ValveSoftware/Proton)

Summary

After the Cyberpunk 2077 Update 2.5 (Edgerunners 2, Oct 22 2026, game build 60152385347545148 / exe 3.0.5813403), the game reproducibly deadlocks during heavy streaming on RADV — the built-in benchmark freezes at a deterministic ~507 s point on its route, the save-load path freezes ~3–5 min in, and even boot-time shader streaming wedges within ~35–215 s. The engine's watchdog writes a post-mortem (CrashInfo.json) and either aborts the process or leaves it wedged. The same install ran fine on game build 2.31a on Oct 21 (5 days prior) on an unchanged kernel/Mesa.

Environment

  • GPU: AMD Radeon AI PRO R9700 (Navi 48, gfx1201, 1002:7551, 32 GB), PCIe 5.0 x16
  • Driver: Mesa/RADV 26.0.8 (radv is not a conformant Vulkan implementation build)
  • Kernel: 7.0.0-38-generic (Ubuntu 26.04); amdgpu, default lockup_timeout, gpu_recovery=auto
  • Display: 3840x2160@165 VRR, GNOME Wayland + XWayland
  • Proton: GE-Proton11-7 (primary); also tested GE-Proton11-6, GE-Proton11-9 — identical freeze
  • Game: GOG via Heroic, all 5,131 files md5-verified against depot
  • No NVIDIA anything: pure AMD path (nvapi fully removed for tests)

Evidence

CrashInfo.json (engine post-mortem telemetry) per run:

  • benchmark route: sessionLength 505.9 / 506.9 / 507.9 s, district: "Glen", isOom: false
  • save-load path: sessionLength 348.9 s, real-world coords, isOom: false
  • boot streaming: sessionLength 35–47 s on cold shader cache, ~156–215 s otherwise

Watchdog minidump (Cyberpunk2077-*.dmp, context-only snapshots, no exception stream):

  • Thread names stream identifies the only non-parked threads. In the benchmark freeze: GameThread parked + vkd3d_queue thread executing inside winevulkan.dll (queue submission / wait never returning). Another capture showed FSR Interpolation Thread inside d3d12core.dll while GameThread parked.
  • redDispatcher11 job workers executing normal engine SIMD math when snapshotted — engine-side is healthy; the wedge is below it.

vkd3d-proton log (with PROTON_LOG=1) shows per-frame activity stopping at the freeze instant — last lines are routine d3d12_command_queue_QueryInterface/DiscardResource warnings, no error. OptiScaler's independent overlay swapchain kept presenting at ~5.7 ms right up to process abort, confirming the wedge is in the game's queue path, not the whole process.

No kernel-side evidence: zero amdgpu reset/timeout messages in dmesg/journal (gpu_recovery would log); no OOM (62 GB RAM, VRAM peaked ~6.7/32 GB during boot wedge).

Ruled out (each independently — identical freeze)

Variable Test Result
OptiScaler/DLSS-NR/dxgi=n hook chain removed froze
CET mods, RED4ext, XL plugins, redscript removed froze
Frame generation (FSR3) off froze
NVAPI (PROTON_FORCE_NVAPI/DXVK_NVAPI + STEAM_COMPAT_CONFIG=disablenvapi removing system32/nvapi64.dll) fully off froze
mod.io EnableModVerification off froze
All custom env vars (RADV_PERFTEST, VKD3D_CONFIG, MESA_*, DRI_PRIME, WINEDLLOVERRIDES) stripped froze
VKD3D_CONFIG=pipeline_library + RADV_PERFTEST=gpl off froze
VKD3D_DISABLE_EXTENSIONS=VK_EXT_descriptor_buffer set froze
RADV_DEBUG=syncshaders set froze
Game UserSettings.json (incl. hidden options) regenerated default froze
Mesa on-disk shader cache quarantined froze
Proton 11-6 / 11-7 / 11-9 all three froze
Kernel / Mesa versions unchanged since last good session —
gamemoderun, display mode switch removed froze

Repro

  1. proton run Cyberpunk2077.exe --launcher-skip -skipStartScreen on GE-Proton (any 11-x)
  2. Either: wait through boot streaming on a cold cache (freeze in ~35–215 s), or reach the menu → CONTINUE → save load (freeze ~3–5 min), or -benchmark (freeze at ~507 s route point)
  3. Engine watchdog writes CrashInfo.json; process wedges (or aborts with default watchdog timeout)

Notes / hypotheses

  • Timing varies with streaming schedule, not a fixed timer — deterministic only on the benchmark's scripted route.
  • 2.5 shipped a new renderer surface (DLSS 4.5/Streamline update, FSR4_FrameGeneration, DLSS_DynamicMultiFrameGeneration options, changed asset streaming) — plausibly a new descriptor-heap/queue usage pattern similar to the historic CP77 OOB-descriptor RADV hangs that vkd3d already works around for RT mode (v2.11 changelog).
  • Happy to test patches or provide more dumps; the repro is 100% reliable here.

Attachments

  • Cyberpunk2077-20261026-004140-460-576/Cyberpunk2077.dmp — watchdog minidump from a stripped-config freeze
  • CrashInfo.json — latest engine post-mortem
  • System: Mesa 26.0.8 / kernel 7.0.0-38 / GE-Proton11-7+ / gfx1201
Ssjaccaud 2026-10-26 github

Attachments — watchdog minidump (Cyberpunk2077-watchdog-dump.zip.b64, decode with base64 -d) + CrashInfo.json: https://gist.github.com/sjaccaud/69c67d05e269fca7e05d9d7b8fa9110d

Ddoitsujin maintainer 2026-10-27 github

can we please have less LLM vomit that neither you or me are ever going to read and just post a proton log?

Ssjaccaud 2026-10-28 github

It's LLM vomit because an LLM wrote it. An LLM wrote it because it's in charge of maintaining the installs. Proton is attached so take what's useful and discard the rest.

BBlisto91 maintainer 2026-10-28 github

Proton log is not attached