You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On a native Linux aarch64 build of the core, the default option combination dolphin_cpu_core = 4 (JITARM64) + dolphin_main_cpu_thread = enabled runs for roughly ten seconds and then the frontend stops producing frames entirely: RetroArch's main loop no longer answers network commands (SCREENSHOT, QUIT) and the process has to be killed. CPU usage drops to ~13%, nothing is logged by the core or by RetroArch after the hang.
Changing either of the two options makes it run indefinitely, so it looks like a race between the JITARM64 CPU thread and the video/main thread rather than a plain JIT miscompile:
--max-frames=600 finishes in 19 s and writes a correct screenshot of the intro at 55 FPS.
--max-frames=1500 never finishes (killed after 300 s, no screenshot).
With dolphin_main_cpu_thread = "disabled", --max-frames=3000 finishes in 60 s.
Reproduced on every attempt (5/5 across two sessions), with both video drivers.
Notes
The hang is not at startup — the intro renders at full speed first, and the frontend is fully responsive during that time. There is no log output at the moment it stops (verbose RetroArch log ends with the normal AV-info/audio-driver lines).
The workaround (dolphin_main_cpu_thread = disabled) costs no performance here — 60 FPS in the intro either way — but the hanging combination is what a user gets by default on aarch64, so the core looks broken out of the box on this platform.
I'm happy to run further experiments on the device (extra logging, thread backtraces, specific option combinations) if that helps narrow it down.
Summary
On a native Linux aarch64 build of the core, the default option combination
dolphin_cpu_core = 4(JITARM64) +dolphin_main_cpu_thread = enabledruns for roughly ten seconds and then the frontend stops producing frames entirely: RetroArch's main loop no longer answers network commands (SCREENSHOT,QUIT) and the process has to be killed. CPU usage drops to ~13%, nothing is logged by the core or by RetroArch after the hang.Changing either of the two options makes it run indefinitely, so it looks like a race between the JITARM64 CPU thread and the video/main thread rather than a plain JIT miscompile:
dolphin_cpu_coredolphin_main_cpu_threadEnvironment
gl(Mesa freedreno) andvulkan(Turnip) — both hang identically-DLIBRETRO=ON, GCC 15, LTO offReproduction
--max-frames=600finishes in 19 s and writes a correct screenshot of the intro at 55 FPS.--max-frames=1500never finishes (killed after 300 s, no screenshot).dolphin_main_cpu_thread = "disabled",--max-frames=3000finishes in 60 s.Notes
The hang is not at startup — the intro renders at full speed first, and the frontend is fully responsive during that time. There is no log output at the moment it stops (verbose RetroArch log ends with the normal AV-info/audio-driver lines).
The workaround (
dolphin_main_cpu_thread = disabled) costs no performance here — 60 FPS in the intro either way — but the hanging combination is what a user gets by default on aarch64, so the core looks broken out of the box on this platform.I'm happy to run further experiments on the device (extra logging, thread backtraces, specific option combinations) if that helps narrow it down.