Repository navigation
fix(libSceAudioOut): drain active calls before shutdown - #3533
krishalivaibhav wants to merge 2 commits into
Conversation
dbd9011 to
a8214a9
Compare
|
Windows test of head
Not checked: that the test fails without the change, Linux, a title run. AI-assisted (Claude Code). |
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
The duplicate-export and silent-stub rules treated every APS5_VABI definition under core/libs/prx/ as a library export, including mocks and callbacks in a library's tests/ directory. Those files are built only into separate test executables, never into the library, so they are not exports. PR boykopovar#3533 failed CI because a sceKernelGetProcessTime mock in libSceAudioOut/tests was reported as a duplicate of libkernel's export. An sce* fixture with a stub-shaped body was also reported as a silent stub, and a real export that shares a name with a fixture in another library's tests/ was reported as a duplicate. Skip files under a tests directory on both sides of the check, with the same test code() already uses for title-specific and progress.py uses for its function counts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Closing: no title is known to reach this. With the queue at 700+ open PRs, please hold off on new PRs that don't name a title needing the change until it's down. If a title stops on this on current main, reopen with the title ID and the log line. |
|
Title-backed follow-up for the closure request: Vampire Survivors, PPSA21703, on Apple M2 / Rosetta / MoltenVK. This reproduces the AudioOut shutdown defect; it is not a gameplay-crash or performance claim. I rebased the branch onto main Controlled title A/B:
Important scope limitation: this is current-main AudioOut source executed in our older adapted macOS runtime; auxiliary AudioOut2 objects and the surrounding libc/libkernel/graphics runtime are not a complete current-main build. The initial test dependencies also use that adapted Mac libc/SDL. I am not presenting this as a pristine/current-main whole-title run, Linux/Windows validation, or proof of long gameplay stability. There was one title run per variant. The branches and original test evidence are preserved. Does this isolated, current-source title shutdown reproduction meet the reopening requirement for the macOS case, or should I keep it closed until the entire Mac runtime is aligned to main? I have kept it closed pending that distinction. AI-assisted: yes (Codex). |
Reuse the admission, drain and cancellation candidate from PR boykopovar#3533 for the original DOOM native-runtime consumer. Preserve the shared SDL initialization helper and add the controlled shutdown regression.
What
Drain active legacy AudioOut calls before closing SDL audio devices during normal libc shutdown. Reject new calls once shutdown starts and cancel paced output waits so teardown does not race port state or mutex destruction.
Add a regression test using the actual AudioOut implementation and libc shutdown registry. A controlled guest clock keeps an output call waiting until shutdown cancels it.
Tested
Rebased onto main
f40b6930ff156834b786730771518b3bd7fe8648; head11ad8bd1a. The shutdown fixture now links the SDL initialization helper added on main. New title-backed A/B evidence for Vampire Survivors (PPSA21703): main AudioOut source aborts insleepUs → mutex::lockafter a normal exit request; candidate exits 0. Only AudioOut differs between the recorded game binaries. This uses an older adapted Mac runtime around current-main AudioOut, not a complete current-main title build. The PR stays closed pending the maintainer’s assessment of that evidence scope. Earlier platform reports below refer to their explicitly stated older heads.pending output was not cancelled.audio_out_shutdown, using head243bcfaddmerged onto mainc6efe068atogether with three other PRs. Their 20-test result is for that combination, not this branch alone; they did not run a no-fix negative control or a title run.This covers legacy AudioOut shutdown. It does not establish game loading compatibility or AudioOut2 shutdown coverage.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)