Additional data point: I tested VKD3D_CONFIG=single_queue to see whether this is an async compute/transfer queue lifetime race. It does not help — same crash, on the first open of the creature tracking list, with the identical signature:
amdgpu: [gfxhub] page fault (ring:24 vmid:5) Process GameThread thread vkd3d_queue
Faulty UTCL2 client ID: TCP (0x8)
amdgpu: ring gfx_0.0.0 timeout → ring reset → device wedged, but recovered through reset
Try https://github.com/HansKristian-Work/vkd3d-proton/pull/3074 with VKD3D_CONFIG=defer_resource_destruction.
Followed up on the #3074 suggestion and then isolated the trigger. Results:
| Proton / vkd3d | defer flag | FSR | Result |
|---|---|---|---|
| stock GE-Proton10-33 | off | on | device-lost on 1st open (deterministic) |
| #3074 build (3.0.0) | on | on | device-lost after several opens |
| #3074 build (3.0.0) | on | off | no crash |
| stock GE-Proton10-33 | off | off | no crash |
Two takeaways:
This matches the log: every fault is immediately preceded by a flood of
d3d12_resource_SetName: FSR resource detected. Forcing retained GPU reference
to work around broken integration code in either game or UE5.
and when it faults:
VK_ERROR_DEVICE_LOST (reason 0x887a0005)
GCVM_L2_PROTECTION_FAULT_STATUS: 0x501431
radv/amdgpu: The CS has been cancelled because the context is lost. This context is innocent.
Thanks a lot for the quick response on this, and for all the work you put into vkd3d-proton — it's a huge part of what makes gaming on Linux actually possible. Much appreciated.
Are you using FSR4? I can reproduce the FSR3 use after free errors being detected once I click the tracker, but no hang. Does this reproduce on stock Proton Experimental?
Should be resolved now. All descriptor qa errors were gone with these fixes and if it still hangs, I need to see VKD3D_CONFIG=fault logs.
proton experimentalx2 2026-06ge-proton10-33x2 2026-06proton 3.0x1 2026-05VKD3D_CONFIG=faultx1 2026-06VKD3D_CONFIGx1 2026-06VKD3D_CONFIG=defer_resource_destruction`.x1 2026-06VKD3D_CONFIG=single_queue`x1 2026-05PROTON_LOG=1`x1 2026-05RADV_DEBUG=hang`x1 2026-050x887a0005x1 2026-06
A
RADV_DEBUG=hangcapture identifies a use-after-free: aVkImageand its backingVK_OBJECT_TYPE_DEVICE_MEMORYare unbound/freed, then the GPU reads a page inside that just-freed VA range from a compute shader (indirect dispatch). RADV's own verdict: "Potential use-after-free detected!"vm_fault.log(full dump attached):pipeline.log— the faulting work is a compute shader (VkDispatchIndirectCommand: x=158, pipeline hash 61b094d5eeb9e8d1).Reproduced on both vkd3d-proton 3.0.1 (Proton Experimental, fault client
TCP) and the vkd3d 2.x in GE-Proton10-33 (fault clientSQC (data)) — same gfxhub page fault onvkd3d_queue/ring:24, only the cache client differs. Possibly related: #2906 (Squad UE5), #3032/#3033 (Forza Horizon 6 image/buffer descriptor aliasing).Repro steps: load a singleplayer session → open the in-game creature tracking list → GPU page fault + ring reset within seconds (with
RADV_DEBUG=hangit freezes and dumps instead).Software information
ARK: Survival Ascended (Steam AppID 2399830), UE5.5.4 (
++ARK1+Rel-1.87, CL 813614), D3D12. Default graphics settings. Trigger is the native creature tracking list; reproduced with and without game mods.System information
experimental-11.0-20260522b); also reproduced on GE-Proton10-33 / wine-10.0 (Staging)Log files
Full
PROTON_LOG=1log is ~8.4 GB (bloated byRADV_DEBUG=hang+ Wine tracing) — attaching a trimmed excerpt (proton-log-auszug.txt, version banner + vkd3d-proton init) instead; can provide a clean full log on request.Attached
ark-asa-vkd3d-uaf-artefakte.zipcontains:radv_dumps_.../— fullRADV_DEBUG=hangdump (vm_fault.log,pipeline.log,addr_binding_report.log,bo_history.log,trace.log,registers.log,gpu_info.log, …)dmesg-*.txt— matching kernel amdgpu page-fault logproton-log-auszug.txt— Proton/DXVK/vkd3d-proton version banner + init excerptark-asa-vkd3d-uaf-artefakte.zip