Steam Deck (RADV VANGOGH): process exits leaving the starting room through the door, no device lost, log ends in the finalized-texture upload path #862
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#862
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Steam Deck OLED, RADV VANGOGH (14 GB unified), Linux AppImage toolchain.
The game loads a save, runs the starting room fine, and the process exits when I walk out of the room through the door. No
CRASH:line, nodevice lost, no OOM — and Steam reports exit code 0. The log stops in the finalized-texture upload path:Settings at the time: 50 % resolution, Custom preset, 6x frame generation,
RX_VK_VRAM_MB=1200,RX_VK_TEX_MAX_MB=128,RX_VK_TEX_MAX_DIM=1024,RX_VK_EVICT_MIN_MS=1500,RX_VK_CHECKPOINTS=1. VRAM was only 3840 of 6027 MB, so this is not the paging case from #519.What I tried:
RX_VK_KEEP_FINALIZED_MB=0— same exit at the door.HOS_HEADLESS=1) with the same save runs 7 minutes without the exit, so it needs the window/present path or it is a race.The same save and route are stable on the older base (the PR #448 branch plus the retired-import giveback), so this looks like a regression between that base and current
main.Build:
mainat58af2c0plus a 10-line local patch that counts the texture eviction's age in milliseconds instead of presents (branchdeck/steamdeckon RufflezAU/Hookshot,gpu/vk/vk_texture.cpponly). I can test a vanilla build or any branch on the Deck, and I have the full log.Is this the same thing as #646 / #708, or a different one? Those report a driver/device lost; here there is neither, the process just goes away with status 0.
Update: I built vanilla latest main (
15ec28d, no local patches except the libstdc++ include fix the AppImage needs) and it does not reach the door at all — it crashes at startup, headless, inside the RADV driver:About 37 s in, right after the mesh programs are set up. Same machine (Steam Deck OLED, RADV VANGOGH, Mesa 26.x). So on this GPU:
mainat58af2c0+ the millisecond eviction patch: loads and runs the starting room, exits when leaving the room through the door (no device lost, exit 0);mainat15ec28d, vanilla: segfault insidelibvulkan_radeon.soduring mesh setup at startup;The mesh shader path on VANGOGH looks like the common thread. Is there a switch to take the mesh path out on this GPU (the
RX_VK_NO_MESHfallback was reverted in #640), or should I bisect between58af2c0and15ec28dto find which of the 38 commits introduced the driver crash? I can build and test any commit on the Deck.More data on the startup crash with
15ec28d, and a diagnostic that points at the mesh path:15ec28d, headless:CRASH: exception 0xc0000005 (write 0x40, guest 0xfffff00000000040) at libvulkan_radeon.so+0x19cc52, ~37 s in, right after a run ofvk: mesh ...program translations.RX_VK_NO_MESH=1(task/mesh draws left out) ran the full 70 s test with zero CRASH lines. The mesh programs are still translated; only their draws are skipped. So the fault needs a mesh draw, not just the pipeline.That makes me think this is the mesh path on VANGOGH, and a compute fallback is the way around it. I am building PR #792 (
hckrman101:reland-640-mesh-stages) and will run it withRX_VK_FORCE_MESH_FALLBACK=1on the Deck — if the fallback is stable here, it gets us the newer fixes (#705, #772) at the cost of the fallback.For reference, the older base (
4d7d2f1+ udmabuf + giveback) uses mesh shaders on this same GPU and does not fault, so something between4d7d2f1and15ec28dchanged how mesh draws are made. If a bisect would help you more than the fallback test, tell me and I will run it on the Deck.Don't know if it's the same issue but on Desktop 7900 XTX:
Mesa RADV : 26.2.6
Bisect result: the startup fault is not tied to a single commit — it looks like a race in the driver during the prepare.
I bisected
58af2c0(boots) …15ec28d(crashed once at 37 s) on the Deck, cold program cache before every run, two runs per commit:So the endpoint itself does not reproduce reliably. What the runs do show is where the time goes:
The prepare takes 166 s on the Deck (38,809 programs), and the one crash happened 37 s into that prepare, in
libvulkan_radeon.sowhile mesh/compute variants were being made. The other runs got through the prepare and then the process was killed by my 240 s test before it presented.Two separate Deck problems, then:
If it helps, I can run a longer soak of one build (say 20 cold starts) to get a crash rate, or test with
RX_VK_PRECOMPILE=0to see whether taking the prepare out removes the fault.One more data point that may help other Deck users:
RX_VK_PRECOMPILE=0avoids the startup fault and the 166 s prepare.With precompile off,
15ec28dboots, loads a save and runs the starting room at 40 fps headless (GPU 26.5 ms, VRAM 3116/5867 MB), and it survives walking out into Kokiri Forest. No driver fault in that run. The cost is the expected one: a new shader compiles at first use, so there is a 112 ms submit spike when a material first appears, and the first entry to a new area built 889 pipelines in 120 s (that cache then persists, so later entries are fast).So on this machine the choice is:
libvulkan_radeonsegfault during it;Separately, the newer build does survive the door but the GPU then hangs a few seconds into Kokiri Forest — that is #817 (hard recovery, markers in my comment there), so it is not the same fault as this one.
Tracked in #1000, follow there. That issue collects every report of Linux / Steam Deck GPU hangs, crashes, low fps and build failures, and this one is linked from it with its GPU, version and log details. If it still happens on v2.0.6 (https://github.com/NotRexed/Hookshot/releases/tag/v2.0.6; Update next to Play in the launcher), please add a comment there with your
hookshot_log.txt.