mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
sys_fs_unlink handled notdir and noent but not readonly, so it fell through to fmt::throw_exception and killed the PPU main thread inside the syscall. The emulator then sat with nothing to run: the game froze with the CPU at 1% and nothing in the log but a stalled RSX. On Android /app_home is the mounted ISO, which is read-only, so any game deleting a file in its own directory hit it -- Oblivion removes warnings.txt at startup and never got past it. Returns CELL_EROFS now, which is already what sys_fs_write and friends do. sys_fs_mkdir and sys_fs_rmdir carried the identical block and are fixed with it. Three log floods, all of which stall the emulator outright because writing them is not free on Android: - sys_fs_utime logged two warning lines per call and rides a polling loop. Oblivion's FileCaching thread hit it 7274 times in ten seconds on one .BSA, ~22k lines, and the frame loop stopped for over twenty seconds. Now trace. - vm::lock_sudo reported a failed mlock on every mapping. Android never grants RLIMIT_MEMLOCK to apps, so it fails forever while advising the user to raise a limit they cannot raise -- 6470 lines in ten seconds here, and ~1200 in every other game log looked at. Reported once per session now. - sys_mmapper's map/unmap pair, 12431 lines over the same window. Now trace. None of them lose information: raise the channel to Trace to get them back.