Repository navigation
Furi [PPSA06147] #7020
zanopi
started this conversation in
Game bring-up
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Existing thread
Title
Furi [PPSA06147]
Content version tested
01.007.225
AnyPS5 commit
main ea5c27b
System tested
Windows 11 build 26200, Ryzen 5 5600X, Radeon RX6600, 16GB RAM
Furthest point
In game
What is shown
Current blocker
The stop: AK::EventManager reads out of bounds, at the prison area after the tutorial boss.
It reproduced in 2 of 2 runs, at the same instruction:
The faulting address moves between runs though. Both reads are limit − 4 (0x2000 − 4 and 0x2800 − 4), with r10 carrying the limit (0x1800, 0x2000) and rdx = r8 = r9 = 0x200 constant. So the same instruction walks off the end of a live object by one element, and the distance depends on state — not a fixed bad pointer.
This looks like the third title to hit it.
Furi runs ea5c27b, which is 774 commits past that base, and still crashes the same way. So whatever removed it for Onimusha wasn't a fix.
Cause is likely known. #6046's comments identify this as a use-after-free: a Wwise voice object is freed, its memory reused for a stereo pan gain (0x70710677 pair), and the voice still points at it. The suspected mechanism is libSceAcm being a no-op — sceAcmBatchWait returns instantly, so a batch object can be freed before the batch would really have completed. Worth noting the AudioOut2 pacing there too: real time needs ~47 pushes/s, observed 0.4 to 7.2/s.
Open PRs: none apply. The open audio PRs are libSceAudioOut/AJM work, and this fault is in the title's own Wwise code, never a host library.
Local changes: none. All 128 libs are byte-identical to a clean upstream build, and no APS5_* switches were used.
How it was run
Relinked with the AnyPS5 relinker from a Release build, from the dump's eboot.bin:
relinker --windows --module-dir Media\Modules --module-dir Media\Plugins eboot.bin app.exe
--module-dir is required because the relinker only searches sce_module/, sce_modules/ and prx/ by default. A module found only at run time is then looked up as a host library in libs, and the title dies with Failed to load module: ...\libs<name>.prx. Furi keeps modules in two directories outside those defaults:
All 14 modules convert (6 in sce_module, 2 in Media/Modules, 6 in Media/Plugins); 1750 NID references, 0 filtered.
The relinker does not copy system libraries, so libs\ was staged separately with the 128 .prx from a build of this commit. It also needs libgcc_s_seh-1.dll, libstdc++-6.dll and libwinpthread-1.dll there — the .prx are loaded without searching PATH, so without them the title fails with error 126.
Environment variables: none. No APS5_* switches were needed to reach the blocker.
Two things were needed beyond the usage guide:
No title-specific configuration was needed — this is a Unity title, so no uecommandline.txt or engine config.
Build: Release, BUILD_TESTING=OFF, MinGW-W64 GCC 15.2.0 (x86_64-ucrt-posix-seh), CMake 4.3.1, Ninja 1.13.2
AI-assisted: yes
All reactions