Repository navigation
Conversation
The eight entries name fixes that have merged (boykopovar#10973, boykopovar#11555, boykopovar#9240, boykopovar#11059, boykopovar#11480), and the guest_getrlimit test skips under ASan; the nightly runs of 2026-10-31, 2026-11-01 and 2026-11-02 list all eight as known but passed. The 2026-11-02 run (41384606155) fails eight tests that the list does not name. Six have an open fix: agc_frame_limit (boykopovar#14995), guest_np_common_runtime (boykopovar#14996), nkwebkit_wtf (boykopovar#15003) and the three pad_identify tests (boykopovar#14438). guest_webrtc_vad stops on a negative left shift in the bundled libfvad, which upstream also has. ngs2_filter is left out: it fails on a numeric mismatch, not on a sanitizer report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed — looks good
The replacement list matches the sanitizer reports: seven sanitizer failures are listed, while ngs2_filter remains a separate bit-exact failure.
What I ran
Reviewed exact head 08c1d42fb93b890a3fdd01bb093825b746ac7ab1 against base a4eca2a056bf3bbbec98ab42e9d28163e4ea9cb8; the isolated merge preview was clean. Environment: Debian Linux x86_64, Python 3.11.2, Git 2.39.5. I did not build AnyPS5 or run a sanitizer build locally.
python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 15165
python3 -m unittest tools.tests.test_sanitizer_report
git diff --check a4eca2a056bf3bbbec98ab42e9d28163e4ea9cb8...08c1d42fb93b890a3fdd01bb093825b746ac7ab1
gh run download 41384606155 -R boykopovar/AnyPS5 --name sanitizer-tests --dir /tmp/anyps5-sanitizer-41384606155
gh run download 41270298089 -R boykopovar/AnyPS5 --name sanitizer-tests --dir /tmp/anyps5-sanitizer-41270298089
gh run download 41165638390 -R boykopovar/AnyPS5 --name sanitizer-tests --dir /tmp/anyps5-sanitizer-41165638390
python3 tools/sanitizer_report.py /tmp/anyps5-sanitizer-41384606155/ctest.xml --known /tmp/anyps5-sanitizer-known-15165.txt --sanitizer address --sanitizer undefinedThe last command uses the PR's exact allowlist extracted from head 08c1d42. I also ran the same report against the Oct 31 and Nov 1 artifacts using the allowlist from each run's own head.
Results
| Check | Result | Note |
|---|---|---|
| Diff check | failed | The final added row has a CRLF terminator. |
| Conventions and template | passed | Exact head. |
| Sanitizer report unit tests | passed | 28 tests. |
| Nightly artifact reconciliation | passed | Seven new entries match; ngs2_filter is a separate failure. |
| Hosted build jobs | not run | Linux and Windows jobs were skipped for this file-only change. |
| Test-quality heuristic | not run | Its helper was absent from the isolated snapshot; it does not apply to this text-only change. |
Commands and unedited output
python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 15165
/tmp/anyps5-pr-precheck/boykopovar-AnyPS5-pr-15165-08c1d42fb93b/report.md
/tmp/anyps5-pr-precheck/boykopovar-AnyPS5-pr-15165-08c1d42fb93b/report.json
Conclusion: checks failed
Precheck output for the failed diff check:
.github/sanitizer-known-failures.txt:7: trailing whitespace.
+pad_identify_rumble address Heap use after free in SDL_GameControllerClose: the test's PadInput outlives SDL_QuitSubSystem, which has already freed its controller; #14438 destroys the pad input first.
The precheck's conventions command printed:
All conventions checks passed.
Its test-quality helper was absent in the isolated snapshot:
/usr/bin/python3: can't open file '/tmp/anyps5-pr-precheck/boykopovar-AnyPS5-pr-15165-08c1d42fb93b/head-08c1d42fb93b-156c0660/tools/pr_test_quality.py': [Errno 2] No such file or directory
python3 -m unittest tools.tests.test_sanitizer_report
............................
----------------------------------------------------------------------
Ran 28 tests in 0.380s
OK
Latest artifact summary (run 41384606155, head 926f7dd492b0b432d9287f4d6faaaf1c9d3c86c5):
3152 tests: 2334 passed, 810 skipped, 8 failed (7 known).
| `ngs2_filter` |
| `agc_frame_limit` | Runs past its 30 s ctest TIMEOUT in the sanitizer build (timed out at 30.06 s); without sanitizers it takes about 1 s. Every check builds its failure message before checking, and each of those allocations is instrumented; #14995 builds the message only when a check fails. |
| `guest_np_common_runtime` | UBSan stops at Strings.cpp:670 (libSceNpCommon), where sceNpUtilParseJid passes the null data() of an empty JID piece to memcpy with size 0; #14996 copies the pieces with std::copy. |
| `guest_webrtc_vad` | The bundled libfvad left-shifts a negative value (3rdparty/libfvad/src/signal_processing/resample_by_2_internal.c:141); upstream libfvad has the same code. |
| `nkwebkit_wtf` | The test expects null from WTF::tryFastMalloc for an impossible size, but the ASan allocator aborts with allocation-size-too-big (libSceNKWebKit/src/Bmalloc.cpp:34) because allocator_may_return_null is 0; #15003 sets it for this test. |
| `pad_identify_connect` | Heap use after free in SDL_GameControllerClose: the test's PadInput outlives SDL_QuitSubSystem, which has already freed its controller; #14438 destroys the pad input first. |
| `pad_identify_off` | Heap use after free in SDL_GameControllerClose: the test's PadInput outlives SDL_QuitSubSystem, which has already freed its controller; #14438 destroys the pad input first. |
| `pad_identify_rumble` | Heap use after free in SDL_GameControllerClose: the test's PadInput outlives SDL_QuitSubSystem, which has already freed its controller; #14438 destroys the pad input first. |
The Nov 1 and Oct 31 reports each listed the previous eight entries as “Listed as known but passed.” The Nov 2 raw ctest.log says NGS2 check failed at line 235 for ngs2_filter, with no sanitizer diagnostic for that test.
Negative control: remove only guest_webrtc_vad from a temporary copy of the allowlist, then run the same reporter on the Nov 2 artifact:
3152 tests: 2334 passed, 810 skipped, 8 failed (6 known).
| `guest_webrtc_vad` | /home/runner/work/AnyPS5/AnyPS5/3rdparty/libfvad/src/signal_processing/resample_by_2_internal.c:141:37: runtime error: left shift of negative value -32490 |
Hosted checks on the PR head:
edge-watch skipping
linux skipping
register-context skipping
relinker skipping
relinker-asan skipping
windows skipping
write-watch skipping
conventions pass
eligibility pass
intake pass
labels pass
Negative control
| Assertion | Change made | Outcome |
|---|---|---|
| Each listed sanitizer failure is classified as known. | Removed guest_webrtc_vad from a temporary allowlist copy. |
The report surfaced it as an unlisted sanitizer failure, as expected. |
Findings
Blocking
None found.
Non-blocking
The precheck flags the final added row's CRLF terminator as trailing whitespace. Normalizing that row to LF would make git diff --check clean; it does not change the report's classification.
Sources
- Allowlist at the reviewed head
- Nov 2 sanitizer run, head
926f7dd492b0b432d9287f4d6faaaf1c9d3c86c5 - Nov 1 sanitizer run, head
5d3ad2112f60f35d463dc2c9d96d1c9d35871015 - Oct 31 sanitizer run, head
de824c2919ca65086c6324a1e0388866a7327eea - Sanitizer report classifier at the reviewed base
Not verified
I did not run a local ASan/UBSan build or console tests. The scheduled sanitizer evidence is from the linked Ubuntu GitHub Actions runs. All PR build jobs were skipped for this change.
To get this to a good state
No behavior change is requested. If the final line ending is normalized, I will rerun git diff --check, the sanitizer report unit tests, and the artifact-to-allowlist comparison on the new head.
mashingaan
left a comment
There was a problem hiding this comment.
Reviewed head 08c1d42. The replacement list distinguishes the seven reported sanitizer failures from the separate bit-exact ngs2_filter failure, removes eight resolved or skipped cases, and keeps reasons tied to fixes or upstream behavior. The exact-head Hosted CI conventions, intake and labels checks pass. A separate review records comparison with the three nightly sanitizer reports and the focused report test.
mashingaan
left a comment
There was a problem hiding this comment.
Correction to my earlier approval: the independent exact-head review reports that git diff --check fails because the final added row in .github/sanitizer-known-failures.txt has a CRLF terminator. Please normalize that row to LF. My earlier approval missed this whitespace failure.
|
Data on It is red in every nightly Sanitizers run I read, from 2026-11-02 to 2026-11-05, with the same message each time,
The run of 2026-11-01 (41270298089) failed the same way and the run of 2026-10-31 (41165638390) passed; I wrote that up under #13787. All four runs above use the image I could not reproduce it with the project's own flags. WSL2 Ubuntu 24.04 (g++ 13.3, AMD Ryzen 7 5800X3D; virtualised kernel, not bare metal) on What does reproduce it: I compiled the same test object by hand with the same flags plus What I cannot show: the job log prints no compile flags, so I do not know that the runner builds the test with x86-64-v3. The only statement about it is in the entry for Checked on 2026-11-05 at 05:21 UTC. AI-assisted (Claude Code). |
✅ AMD GPU test: passedPR head
Failing on main too (3, not counted against this PR)Validation IDs already present on main (4 IDs in 426 tests)Skipped (7)ReproduceAutomated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs. |
What
.github/sanitizer-known-failures.txtlists eight tests whose fixes have merged (#10973, #11555, #9240, #11059, #11480;guest_getrlimitnow skips under ASan). The nightly Sanitizers runs of 2026-10-31, 2026-11-01 and 2026-11-02 report all eight under "Listed as known but passed". This removes them.The 2026-11-02 run (41384606155) fails eight tests the list does not name. This adds seven with their reason and fix:
agc_frame_limit: timeout under ASan, fix open in fix(tests): build the frame limit failure messages only when a check fails #14995guest_np_common_runtime: UBSan atStrings.cpp:670, fix open in fix(libSceNpCommon): copy empty JID pieces in sceNpUtilParseJid without passing a null pointer to memcpy #14996nkwebkit_wtf: ASan allocation-size-too-big on an intentionally impossible allocation, fix open in test(libSceNKWebKit): let nkwebkit_wtf see null from an impossible allocation under ASan #15003pad_identify_connect,pad_identify_off,pad_identify_rumble: heap use after free inSDL_GameControllerClose, fix open in fix(tests): destroy the pad input before the pad identify test quits SDL #14438guest_webrtc_vad: negative left shift in the bundled libfvad, which upstream libfvad still hasngs2_filteris left out: it fails a bit-exact check (Ngs2Filter.cpp:235), not on a sanitizer report.Tested
WSL2 Ubuntu 24.04, Python 3.12:
python3 -m unittest tools.tests.test_sanitizer_reportpasses, includingRepositoryKnownFailuresTests(entries parse and stay sorted).tools/check_conventions.pyreports nothing for the change. The entries were checked against the reports of the three nightly runs above; no sanitizer build was run locally.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)🤖 Generated with Claude Code