[Crash] Sober terminates silently ~5 minutes into game, around autosave – AMD Radeon Graphics / Mesa
bug
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 条评论