ITADN

[Crash] Sober terminates silently ~5 minutes into game, around autosave – AMD Radeon Graphics / Mesa

#2208Openondoreoku 创建于 2026-06-14
bug
O
ondoreokucommented
Sober crashes silently after approximately **5–6 minutes** of gameplay, consistently. The application window disappears without any error message in the terminal, no core dump, and no entry in `dmesg`. The crash occurs on both Wayland and Xorg, and is **100% reproducible** in any Roblox game. I have now performed extensive testing across multiple graphics drivers, rendering backends, and Mesa versions – including **software rendering** (llvmpipe / softpipe) – and the crash remains identical. This proves the problem is **internal to Sober**, not a driver or Mesa regression. ## System - **OS:** Pop!_OS 24.04 LTS - **Desktop environments tested:** COSMIC (Wayland) & GNOME on Xorg - **CPU:** AMD Ryzen 3 PRO 4450U with Radeon Graphics - **GPU:** AMD Radeon Graphics (iGPU, RENOIR / Vega 6) - **Kernel:** 7.0.11-76070011-generic - **Mesa versions tested:** 26.0.6 (stock) and 26.1.2 (kisak PPA) - **Sober version:** 1.7.0 (Flatpak, system‑wide) ## What I have now tested (all fail the same way) | Test | Configuration / Command | Result | |------|------------------------|--------| | Default OpenGL (radeonsi) | Mesa 26.0.6 | Crash after ~5‑6 min | | Mesa 26.1.2 (radeonsi) | `GALLIUM_DRIVER=radeonsi` | Crash after ~5‑6 min | | Software rendering (llvmpipe) | `GALLIUM_DRIVER=llvmpipe` | Crash after ~5‑6 min | | Software rendering (softpipe) | `GALLIUM_DRIVER=softpipe` | Crash after ~5‑6 min | | Vulkan (AMDVLK) | Sober forces OpenGL, but tested anyway | Crash | | VRAM override | `__GL_VRAM_LIMIT=2048` | VRAM still reported as 64 MB; crash | | Driver debug flags | `RADV_DEBUG=nodcc,nohyperz`, etc. | No effect | | Xorg session (GNOME on Xorg) | Same as Wayland | Crash after ~5‑6 min | | gamescope (Wayland) | `gamescope -e -- %F` | Same crash; gamescope exits with `(EE) failed to read Wayland events: Broken pipe` | All tests were run with `flatpak run --env=RUST_LOG=debug org.vinegarhq.Sober`. The terminal output stops silently – no `panic`, no `segfault`, no `SIGABRT`. ### Key observations from the initial logs (`latest.log` and `terminal_output.log`) Before proceeding with driver and Mesa tests, the first captured logs already showed the same fatal pattern: 1. **Incorrect VRAM detection** – The log reports: [FLog::Graphics] Video memory size: 67108864 That is exactly **64 MB**, which is far below the available shared memory (16 GB total RAM). 2. **Silent crash after ~340 seconds** – The session runs normally until approximately **360 seconds** (6 minutes) after process start. The last line in `latest.log` is: [FLog::SessionL2ValidationHelper] onSessionHeartbeat sc_count 13 sh_count 17 cur_l2ts 358.224253724 elapsed_l2b 340.012635203 No error message, panic, segfault, or OOM killer entry appears. The terminal output ends at the same moment without any stack trace. 3. **Roblox client does not crash internally** – Up to the last millisecond, the client continues processing heartbeats, window resizes, and network packets. The termination is external and silent. 4. **Minor unrelated warnings** – There are warnings about thumbnail loading failures, WebSocket timeouts (to an internal IP `10.110.101.222:5052`), and missing shaders – none of which indicate an imminent crash. 5. **Vulkan is not used** – The log confirms `OpenGL forced before global_window_init; won't bother loading Vulkan libs`, so the crash is independent of the graphics API. These initial logs already established the same behaviour later reproduced with llvmpipe, softpipe, AMDVLK, and Mesa 26.1.2 – reinforcing that the issue is internal to Sober, not a driver or configuration bug. ## Key observations from new logs (attached) I collected six new log files covering different driver configurations. The most relevant are: - `latest_mesa26.log` – Roblox internal log (Mesa 26.1.2) - `sober_mesa26_test.log` – Terminal output with `RUST_LOG=debug` - `latest_llvmpipe.log` – llvmpipe (software) test - `latest_softpipe.log` – softpipe (software) test - `latest_amdvlk.log` – AMDVLK / Vulkan fallback - `latest_vram.log` – memory‑focused log ### 1. Incorrect VRAM detection (present in every log) Every single log contains: [FLog::Graphics] Video memory size: 67108864 That is **64 MB**. My iGPU has no dedicated VRAM; it shares 16 GB of system RAM. Sober’s own log shows `device_memory_mib:15205` (total RAM) but then clamps `Video memory size` to 64 MB. This severe underreporting likely causes memory allocation failures when the game exceeds this artificial limit (e.g., during autosave or texture streaming). ### 2. Silent crash after approximately 340–360 seconds All logs stop abruptly between 320 and 350 seconds after process start. The last lines are routine: [FLog::Graphics] SceneManager: resizing main targets to 1920x988 [FLog::SessionL2ValidationHelper] onSessionHeartbeat ... There is **no error message** – no OOM killer, no segfault, no stack trace. The process is simply killed externally. ### 3. Crash is driver‑independent Even when forcing software rendering (llvmpipe / softpipe), which bypasses all AMD GPU drivers and runs only on the CPU, the crash occurs at the same time. This proves the problem is **not** a bug in the amdgpu kernel module, Mesa, or RADV/AMDVLK. ### 4. Roblox client itself does not crash The internal `latest.log` shows normal operation up to the last millisecond. The client continues to process heartbeats, resize windows, and handle network packets. The termination is external – something inside Sober’s runtime (or the binary translation layer) kills the process silently. ## Conclusion / Request for investigation The evidence conclusively points to a **bug inside Sober**, not in the graphics stack or the Roblox client. **Primary suspect:** Sober incorrectly detects VRAM as 64 MB on AMD iGPUs (Renoir / Vega). This artificial limit is almost certainly exhausted after 5–6 minutes of gameplay, causing a silent allocation failure. Because the failure is silent, it may be happening at a very low level (e.g., inside the FEX translation layer or a custom allocator that does not report errors). Please investigate the following in Sober’s codebase: 1. **VRAM query logic** – How is `Video memory size` determined for integrated AMD GPUs? Why does it always return 64 MB even though total RAM is correctly detected? 2. **Memory allocation path** – Is there a hardcoded fallback value of 64 MB when detection fails? If so, that value is dangerously low for modern Roblox. 3. **Silent termination** – Which signals or exit codes are being ignored? Can we force a core dump or at least log an error when the process is about to die? 4. **Translation layer** – If the crash occurs inside ARM → x86 emulation, any memory‑related faults should be captured and logged. Given that the crash persists even under **software rendering**, a driver or kernel regression is ruled out. The issue is **not** a recent Mesa regression – it existed before and after upgrading to 26.1.2. ## Logs attached [latest.log](https://github.com/user-attachments/files/28937606/latest.log) [terminal_output.log](https://github.com/user-attachments/files/28937607/terminal_output.log) [latest_mesa26.log](https://github.com/user-attachments/files/28937612/latest_mesa26.log) [sober_mesa26_test.log](https://github.com/user-attachments/files/28937613/sober_mesa26_test.log) [latest_amdvlk.log](https://github.com/user-attachments/files/28937624/latest_amdvlk.log) [sober_test_amdvlk.log](https://github.com/user-attachments/files/28937625/sober_test_amdvlk.log) [latest_llvmpipe.log](https://github.com/user-attachments/files/28937627/latest_llvmpipe.log) [sober_test_llvmpipe.log](https://github.com/user-attachments/files/28937628/sober_test_llvmpipe.log) [latest_softpipe.log](https://github.com/user-attachments/files/28937634/latest_softpipe.log) [sober_test_softpipe.log](https://github.com/user-attachments/files/28937633/sober_test_softpipe.log) [latest_vram.log](https://github.com/user-attachments/files/28937653/latest_vram.log) [sober_vram_test.log](https://github.com/user-attachments/files/28937654/sober_vram_test.log) All logs show the same pattern: normal operation, VRAM = 64 MB, no error, then abrupt termination after ~340 seconds.
2 条评论