Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A caller can currently create an AJM decoder using context0, or delete an instance owned by another initialized context. On main
151a2cb6e274, a foreign-context destroy returns0 and the real owner's subsequent destroy returns0x80930003because its instance has already been erased.Validate the context before creating or destroying an instance, retain its owning context in the private instance state, and reject foreign-context destruction with
SCE_AJM_ERROR_INVALID_INSTANCE. The owner can still destroy its instance afterward. The context checks follow shadPS4's AJM entry points and its per-context instance destruction. These are reference-implementation semantics, not a PS5 module or console measurement.Finalization still does not invalidate contexts or release their resources, and batch jobs still look up instances globally. Those existing gaps remain explicit in the debt entry; no title unblock, audio improvement or performance gain is claimed.
Tested
Linux x86-64, Ryzen9 7950X, GCC16.2.1, CMake Release, BUILD_TESTING=ON. Built actual
libSceAjm.native,libSceAjmiand the selected fixtures.guest_ajmfails; same executable with frozen main module bank also fails.guest_ajm, AAC multichannel, vibration, WVorbis, teardown, ATRAC9 gradient and config-data).lddverifies the selected modules.Source diff, baseline/fix build/test/JUnit logs, same-executable controls, source/library pins and manual overlap review, SHA-256
f24ff6dbce5b1365f09eae5ae16db65866a6601211ff27d253e878b6449e1975(download verified).The required overlap check compared1904 open PRs. It initially reported an additive debt conflict with #15906; moving this note to a separate entry makes the two branches merge cleanly. #13486 and #14212 already conflict with main, so I manually compared their topic diffs and both create/destroy bodies: neither implements these ownership checks. #13486's remaining conflicts are relinker files; #14212 is debt formatting. No dependency on those branches.
No fresh Windows, PS5 SDK-module, console, game/GPU or full-SDK run.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)