protonscr

Warhammer 40,000: Darktide crashes consistently with a GPU hang during frame presentation on an AMD RX 9070 XT (RDNA4 / GFX1201) under VKD3D-Proton via GE-Proton10-34.

vkd3dopen
HansKristian-Work/vkd3d-proton#3072 · opened 2026-05-28 by alexanderagius · updated 2026-08-22 · 5 comments · github
Aalexanderagius 2026-05-28 github

Every crash is identical: the DX12 Present call never returns. The game
engine times out after ~17 seconds with WAIT_TIMEOUT (0x103).

System

  • OS: Nobara 43 (Fedora-based), kernel 7.0.9-200.nobara.fc43.x86_64
  • GPU: AMD Radeon RX 9070 XT (RADV GFX1201), 16GB VRAM
  • Driver: mesa-vulkan-drivers-git-freeworld-26.2.0 / mesa-freeworld-26.1.0
  • Proton: GE-Proton10-34 (Wine 10.0 Staging)
  • Game: Warhammer 40,000: Darktide (AppID 1361210), DX12
  • Desktop: KDE Plasma 6 / Wayland, gamescope 3.16.19

Crash signature from game console logs (100% consistent across 19 crashes)

<>
Thread main
Stall 17246 ms:
Application::update 17254 ms
RI::wait_for_fence 17246 ms
stingray::RenderInterface::wait_for_fence 0 ms
<</Thread Stall Warning Stack>>
<>
Thread renderer
Stall 17248 ms:
RI::present_frame 17248 ms
present_windows 17248 ms
present 17248 ms
<</Thread Stall Warning Stack>>

Game-side error code: Detected shutdown with error code: 0x103 (WAIT_TIMEOUT)

Crash signature from systemd coredump (Mesa abort)

The GPU hang propagates to all active OpenGL clients (Xwayland,
plasma-keyboard), which abort via Mesa's unconditional abort() on GPU
context reset:
#0 abort (libc.so.6)
#1 amdgpu_ctx_set_sw_reset_status (libgallium-26.1.0.so + 0xb4f1e0)
#2 amdgpu_cs_submit_ib (libgallium-26.1.0.so + 0xb5345f)
#3 util_queue_thread_func

VRAM at time of crash

Not a memory pressure issue — VRAM usage at crash time across all sessions:

  • Local VRAM used: 4.6–4.9 GB of 16 GB available
  • Non-local: 20 MB used

Attempted mitigations (none resolved)

  • amdgpu.runpm=0 amdgpu.aspm=0 kernel parameters
  • RADV_DEBUG=nohiz
  • DISABLE_VULKAN_OBS_CAPTURE=1
  • VK_ICD_FILENAMES forced to radeon_icd.x86_64.json
  • AMD_DEBUG=nohiz added to session environment

Notes

  • Crash occurs during frame present, not during heavy compute or loading
  • GPU adapter correctly selected: [DXGIHelper] choosing adapter: 0 (AMD Radeon RX 9070 XT (RADV GFX1201))
  • Intel iGPU (RPL-S) also present in system but not selected
  • Hardware Accelerated GPU Scheduler reports false under Wine/RADV
  • Crashes date back to first use of the GPU (March 2026), 19 confirmed
    crashes over ~2 months, all identical
  • Game uses DX12 path; no DX11 fallback available
Kkuroki-kael 2026-06-18 github

I hope the maintainers will look into this sometime soon. I got the same issue with Pragmata and it's unplayable right now at the later game stage.

System info

  • GPU: AMD Radeon RX 9070 XT (Navi 48, GFX1201), PCI ID [1002:7550], XFX (subsys 8811)
  • VBIOS: 113-EXT108828-100
  • Kernel: 7.0.12-1-cachyos (CachyOS, Arch-based)
  • Mesa: 26.1.2-1 (stable, both 64-bit and lib32)
  • vulkan-radeon: 26.1.2-1 (stable)
  • Proton: CachyOS-Proton (forced, for raytracing support)
  • Compositor: Hyprland (Wayland)
  • amdgpu kernel params: amdgpu.noretry=1

Symptom

GPU hang (ring gfx_0.0.0 timeout) while running PRAGMATA.exe via Proton/vkd3d-proton. Triggers a GPU reset (MODE1, succeeds but VRAM is lost), after which the display pipe never recovers cleanly — repeated flip_done timed out / commit wait timed out for ~2 minutes, ending in the Wayland compositor (Hyprland) aborting (SIGABRT) because its GL/Vulkan context is gone.

Reproduced twice within 30 minutes on the same boot, with identical signature both times (same process, same ring). GPU temperature (56-59°C) and power draw (~250-310W) were completely normal in the seconds immediately before the hang — no thermal/power anomaly, the ring just stops responding.

This matches this issue here: same GPU generation (GFX1201/RDNA4), DX12 title via vkd3d-proton, GPU hang during frame presentation/timeout. Notably reproduces on a different distro/driver stack (Arch/CachyOS + stable Mesa 26.1.2, vs. Fedora Nobara + git-freeworld Mesa 26.2.0 in #3072), suggesting this isn't tied to one particular packaging/driver combination.

Kernel log (dmesg, GPU-relevant lines only, full hang-to-attempted-recovery sequence)

Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: Dumping IP State
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: Dumping IP State Completed
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: [drm] AMDGPU device coredump file has been created
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: [drm] Check your /sys/class/drm/card1/device/devcoredump/data
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: ring gfx_0.0.0 timeout, signaled seq=652721, emitted seq=652723
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0:  Process PRAGMATA.exe pid 6268 thread vkd3d_queue pid 6566
Jun 18 16:23:00 Nyx kernel: amdgpu 0000:2f:00.0: Starting gfx_0.0.0 ring reset
Jun 18 16:23:03 Nyx kernel: amdgpu 0000:2f:00.0: Ring gfx_0.0.0 reset failed
Jun 18 16:23:03 Nyx kernel: amdgpu 0000:2f:00.0: GPU reset begin!. Source:  1
Jun 18 16:23:05 Nyx kernel: amdgpu 0000:2f:00.0: MES(1) failed to respond to msg=REMOVE_QUEUE
Jun 18 16:23:05 Nyx kernel: amdgpu 0000:2f:00.0: failed to unmap legacy queue
Jun 18 16:23:05 Nyx kernel: [drm:gfx_v12_0_hw_fini.llvm.10650329828104097643 [amdgpu]] *ERROR* failed to halt cp gfx
Jun 18 16:23:05 Nyx kernel: amdgpu 0000:2f:00.0: MODE1 reset
Jun 18 16:23:05 Nyx kernel: amdgpu 0000:2f:00.0: GPU mode1 reset
Jun 18 16:23:05 Nyx kernel: amdgpu 0000:2f:00.0: GPU smu mode1 reset
Jun 18 16:23:06 Nyx kernel: amdgpu 0000:2f:00.0: GPU reset succeeded, trying to resume
Jun 18 16:23:06 Nyx kernel: amdgpu 0000:2f:00.0: [drm] PCIE GART of 512M enabled (table at 0x00000083DAB00000).
Jun 18 16:23:06 Nyx kernel: amdgpu 0000:2f:00.0: VRAM is lost due to GPU reset!
Jun 18 16:23:06 Nyx kernel: amdgpu 0000:2f:00.0: PSP is resuming...
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: RAP: optional rap ta ucode is not available
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: SECUREDISPLAY: optional securedisplay ta ucode is not available
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: SMU is resuming...
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: smu driver if version = 0x0000002e, smu fw if version = 0x00000033, smu fw program = 0, smu fw version = 0x00684c00 (104.76.0)
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: SMU is resumed successfully!
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: program CP_MES_CNTL : 0x4000000
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: program CP_MES_CNTL : 0xc000000
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: [drm] DMUB hardware initialized: version=0x0A003A00
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring comp_1.0.0 uses VM inv eng 1 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring comp_1.1.0 uses VM inv eng 4 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring comp_1.0.1 uses VM inv eng 7 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring comp_1.1.1 uses VM inv eng 8 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring sdma0 uses VM inv eng 9 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring sdma1 uses VM inv eng 10 on hub 0
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring vcn_unified_0 uses VM inv eng 0 on hub 8
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: ring jpeg_dec uses VM inv eng 1 on hub 8
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: GPU reset(1) succeeded!
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* Failed to initialize parser -125!
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* Failed to initialize parser -125!
Jun 18 16:23:07 Nyx kernel: amdgpu 0000:2f:00.0: [drm] device wedged, but recovered through reset
Jun 18 16:23:17 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] flip_done timed out
Jun 18 16:23:18 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] hw_done or flip_done timed out
Jun 18 16:23:28 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:23:28 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] commit wait timed out
Jun 18 16:23:38 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:23:38 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [PLANE:202:plane-3] commit wait timed out
Jun 18 16:23:38 Nyx kernel: acrtc_attach->pflip_status != AMDGPU_FLIP_NONE
Jun 18 16:23:38 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:10222 at amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu], CPU#0: systemd-logind/716
Jun 18 16:23:38 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu]
Jun 18 16:23:38 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:9604 at amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu], CPU#0: systemd-logind/716
Jun 18 16:23:38 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu]
Jun 18 16:23:49 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] flip_done timed out
Jun 18 16:23:59 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:23:59 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] commit wait timed out
Jun 18 16:24:09 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:24:09 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CONNECTOR:431:DP-1] commit wait timed out
Jun 18 16:24:19 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:24:19 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [PLANE:202:plane-3] commit wait timed out
Jun 18 16:24:19 Nyx kernel: acrtc_attach->pflip_status != AMDGPU_FLIP_NONE
Jun 18 16:24:19 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:10222 at amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu], CPU#5: systemd-logind/716
Jun 18 16:24:19 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu]
Jun 18 16:24:19 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:9604 at amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu], CPU#5: systemd-logind/716
Jun 18 16:24:19 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu]
Jun 18 16:24:30 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] flip_done timed out
Jun 18 16:24:40 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:24:40 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] commit wait timed out
Jun 18 16:24:50 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:24:50 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CONNECTOR:431:DP-1] commit wait timed out
Jun 18 16:25:00 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* flip_done timed out
Jun 18 16:25:00 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [PLANE:202:plane-3] commit wait timed out
Jun 18 16:25:00 Nyx kernel: acrtc_attach->pflip_status != AMDGPU_FLIP_NONE
Jun 18 16:25:00 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:10222 at amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu], CPU#3: systemd-logind/716
Jun 18 16:25:00 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3ef5/0x42c0 [amdgpu]
Jun 18 16:25:00 Nyx kernel: WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:9604 at amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu], CPU#3: systemd-logind/716
Jun 18 16:25:00 Nyx kernel: RIP: 0010:amdgpu_dm_atomic_commit_tail+0x3efc/0x42c0 [amdgpu]
Jun 18 16:25:11 Nyx kernel: amdgpu 0000:2f:00.0: [drm] *ERROR* [CRTC:417:crtc-0] flip_done timed out
Jun 18 16:25:12 Nyx kernel: amdgpu 0000:2f:00.0: [drm] vblank wait timed out on crtc 0
Jun 18 16:25:12 Nyx kernel: WARNING: drivers/gpu/drm/drm_vblank.c:1320 at drm_crtc_wait_one_vblank+0x2a8/0x3a0, CPU#3: kworker/3:1/98
Jun 18 16:25:14 Nyx kernel: INFO: task start-hyprland:995 blocked for more than 122 seconds.
Jun 18 16:25:14 Nyx kernel: INFO: task start-hyprland:995 blocked on a semaphore likely last held by task systemd-logind:716

Compositor crash (Hyprland, after the failed recovery)

Process 30915 (Hyprland) of user 1000 terminated abnormally with signal 6/ABRT
#1  0x000055ca75a287dc n/a (Hyprland + 0x3d17dc)
[#10](/issue/HansKristian-Work/vkd3d-proton/10) 0x000055ca75806fba n/a (Hyprland + 0x1affba)
[#11](/issue/HansKristian-Work/vkd3d-proton/11) 0x000055ca75a47731 CCompositor::initServer (Hyprland + 0x3f0731)
[#12](/issue/HansKristian-Work/vkd3d-proton/12) 0x000055ca758ece20 main (Hyprland + 0x295e20)
[#15](/issue/HansKristian-Work/vkd3d-proton/15) 0x000055ca75a11c95 _start (Hyprland + 0x3bac95)
Jjusttryingtohelpa 2026-07-27 github

Hopefully this information is related, and helpful in some way. Might be completely unhelpful. However:

OS: CachyOS x86_64
Kernel: linux-cachyos 7.1.5-1
GPU: AMD Radeon RX 9070 XT (RADV GFX1201 / gfx1201), 16GB VRAM
CPU: AMD Ryzen 7 9800X3D
Mesa: 26.1.5-1
vulkan-radeon: 26.1.5-1
linux-firmware: 20260622-1
Compat layer: Proton-GE 11-3
RAM: 31GB

Experiencing similar freezing issues across multiple DX12 games (RDR2 and Starfield). When freeze occurs:

amdgpu 0000:03:00.0: ring gfx_0.0.0 timeout, signaled seq=170810, emitted seq=170812
amdgpu 0000:03:00.0: Process Main pid 6397 thread vkd3d_queue pid 6483
amdgpu 0000:03:00.0: Starting gfx_0.0.0 ring reset
amdgpu 0000:03:00.0: Ring gfx_0.0.0 reset succeeded
amdgpu 0000:03:00.0: [drm] device wedged, but no recovery needed

I've tried every solution I've been able to find across reddit/discords/forums, and the only thing that seems to have gotten the freezing to stop was to install LACT and set the "Performance Setting" level to "Highest Clocks".

RRealPotatoe 2026-08-01 github

Adding another instance of this on an RX 9070 XT. The failure pattern matches the original report.

System

  • OS: Fedora 44 (kernel 7.1.5-201.fc44.x86_64)
  • GPU: AMD Radeon RX 9070 XT (RADV GFX1201)
  • Mesa: mesa-vulkan-drivers-freeworld 26.1.5-2.fc44
  • vulkan-loader: 1.4.341.0
  • Tested across Proton 11-03, Proton 10-34, and Proton Experimental. The hang is identical on all three, so it doesn't appear to be specific to a particular Proton release.

Symptom

ring gfx_0.0.0 times out mid-session, the soft ring reset fails, and the driver falls back to a full MODE1 GPU reset:

amdgpu 0000:0c:00.0: ring gfx_0.0.0 timeout, signaled seq=1207766, emitted seq=1207768
amdgpu 0000:0c:00.0: Starting gfx_0.0.0 ring reset
amdgpu 0000:0c:00.0: Ring gfx_0.0.0 reset failed
amdgpu 0000:0c:00.0: GPU reset begin!. Source: 1
amdgpu 0000:0c:00.0: MODE1 reset
amdgpu 0000:0c:00.0: GPU reset succeeded, trying to resume
amdgpu 0000:0c:00.0: VRAM is lost due to GPU reset!

Like the original report, the reset isn't contained to the game. It takes the entire desktop session with it (plasmashell/kwin: QRhiGles2: Context is lost, X server: XIO: fatal IO error 110, and RADV reporting CS has been cancelled because the context is lost).

In the Darktide console log immediately before the hang, d3d12_resource_context::dispatch and RI::wait_for_fence calls increase from roughly 100–200 ms to 500–900 ms in the seconds leading up to the timeout. That looks more like the GPU gradually falling behind than an instantaneous hang.

I've attached the full kernel log from the reset in case it helps correlate with the original report.

gpu-reset.log

Jjusttryingtohelpa 2026-08-22 github

Hi, me again. I did some more looking into this and seem to have found the issue. It definitely has to do with whatever default performance profile the 9070xt is given. Do yall happen to have the ASRock Challenger card? I discovered that on the default power profile, when playing a DX12 game like RDR2 or Oblivion remaster, the clock speed was shooting up past 3200mhz (it’s rated for ~2800) Temps all reported within safe operating limits, but I also made my fan curve a bit more liberal and still got the crashing. Ive had a -500mhz offset on the card (at least in LACT, doing this is more like setting a -300mhz offset, it’s got me down to the high 2800s), and I lowered my voltage to around 275. Have not had a single freeze/crash in any of these games since. Likely an issue with AMD Linux firmware/drivers

Proton versions

Launch options