Repository navigation
Conversation
|
Which line does PPSA01325 stop at on current main? Please post the log from an unpatched build. Two things I can't match with the description:
Do the two added resolves fail without the change? The Tested section lists no build or ctest run. |
|
Pre-review found a deterministic test regression on Linux — flagging early since full CI doesn't run automatically on PRs. Independent pre-review (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release,
Each fails fast with Negative control: the same 7-test family passes 100% at this branch's own merge base ( Separately: this branch is ~1364 commits behind Happy to provide the full output if useful. |
|
Closing: with this branch |
Fixes #2914.
What
In titles such as Astro's Playroom (PPSA01325), shader ABI resolution calls (
ResolveGraphicsStagesAbi,ResolveShaderAbi,ResolveGraphicsAbi) can pass aShader*whose code pointer matches a registered shader, but whose header is allocated or copied at a different guest address.When
SameHeadermatches the relocated header, the snapshot was not published for the new address. When decoders resolve stage info against the registered snapshot, pointer offsets are computed against the original base address instead of the relocated copy, leading to out-of-bounds header offsets.This change:
RelocateSnapshotHeaderandPublishRegisteredShaderundermutexat the three resolve sites (ResolveGraphicsStagesAbi,ResolveShaderAbi,ResolveGraphicsAbi).ShaderSnapshotstrictly immutable withoutmutablemembers.PreparedShaders.cpptests with relocated header copies.Tested
python tools/check_conventions.py --base origin/main(passed).python -m unittest discover tools/tests(60 passed).git diff --check(clean).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