Skip to content

fix(agc): read buffer V#s over unreadable memory as null - #2505

Closed
esatturan wants to merge 1 commit into
boykopovar:mainfrom
esatturan:fix/agc-unreachable-vsharps
Closed

esatturan wants to merge 1 commit into
boykopovar:mainfrom
esatturan:fix/agc-unreachable-vsharps

Conversation

@esatturan

Copy link
Copy Markdown
Contributor

Split from #2053 in review.

What

A buffer V# whose base has no readable page, or whose size is over maxStorageBufferRange over memory that is not readable that far, binds the empty placeholder buffer, as null and zero-sized V#s do and as invalid image descriptors read.

  • PPSA29141's shaders declare SRT slots they do not reach on the path taken. Those slots keep unrelated words, such as pointers and terabyte sizes over host memory, and a draw with one threw shader buffer exceeds descriptor range limit.
  • A V# of another type and reserved bits still throw.
  • A sparse heap bound whole whose first page is uncommitted now reads as null too; recorded in TechnicalDebt.

Tested

Windows 11, i7-13650HX, RTX 4070 Laptop, MinGW-w64 GCC 15.2.

  • agc_driver_graphics: two unreachable V#s bind the placeholder; an unmapped V# over the range limit and one outside the user address space are accepted. It fails on main (unreachable V#s did not bind the placeholder buffer).
  • Full ctest on current main (c6e3aa76) merged with this branch, the other LEGO Party! PRs and feat(libkernel): implement _umtx_op wait and wake operations #1482: 547/547 pass. On Windows, main's libs step currently fails with duplicate patched export name: LibwuIonIBw: feat(videoout): implement sceVideoOutGetResolutionStatus #1714 added APS5_EXPORTs for sceVideoOutAddVrrActiveStatusEvent and sceVideoOutAddVrrStatusFlagsPrivilege, whose names the NID table already maps. Those two lines were removed locally for the run.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • AI-assisted: yes (Claude Code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the intake paused Closed while PR intake is limited to authors with at least 10 PRs merged into main label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

Thank you for your interest in the project! We are sorry, but we cannot accept more PRs while we work through the existing backlog. This PR has been automatically closed and labeled "intake paused". This is not a judgment of the quality of your changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

intake paused Closed while PR intake is limited to authors with at least 10 PRs merged into main

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant