Skip to content

test(relinker): run guest_none_relocations as two halves - #15526

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
oneandonlydean:fix/relinker-guest-none-relocations-split
Nov 4, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
oneandonlydean:fix/relinker-guest-none-relocations-split

Conversation

@oneandonlydean

Copy link
Copy Markdown
Collaborator

What

guest_none_relocations times out intermittently on main's relinker (macos-latest, clang++, x86_64) job (the x86_64 build runs emulated on an arm runner). It is not tied to a commit: over the 10 main runs of 4a7770b to 66387a1 it took 16.3, 11.4, 20.04 (timeout), 19.99, 20.07 (timeout), 20.03 (timeout), 19.33, 19.99, 20.07 (timeout) and 15.4 s against its 20 s limit, while the native arm64 macOS job took 1.3 to 5.1 s. Locally the whole test takes 0.4 s, so the time on that job is process spawning: the test runs the relinker as a subprocess for every case, for sce False and then True.

The test now takes plain, sce or all (the default, so the tests that import its helpers and any direct run are unchanged) and CMake registers guest_none_relocations (plain) and guest_none_relocations_sce, each with the same 20 s limit and half the work. No case is removed or loosened.

Tested

  • Linux workstation, current main 4f41f4c375 relinker: plain, sce and no argument each print "Guest no-op relocation tests passed"; an unknown mode raises KeyError.
  • Not run: the CMake registration through ctest (the edit is two add_test lines and one set_tests_properties), the macOS jobs. Their timing after the split is the thing this PR needs CI to show.
  • Not changed: the other timeout seen at 6e08dc3, select_tests_SelectArgumentTests (30.12 s on the arm job). It builds a real cmake project in setUpClass, took 3.4 to 18 s in the other runs, and printed nothing at the timeout; we treat it as runner noise and did not touch it.

Checklist

  • Based on current main 4f41f4c375; 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; silent stubs are listed in technical debt (none added)
  • No notes, investigation .md files or images added to the repository
  • New third-party code is a submodule built from source (none added)
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none (intermittent red guest_none_relocations on main)
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

On the x86_64 macOS relinker job (emulated on an arm runner) the test took 11 to 20 s against its
20 s limit. Over the main runs of 4a7770b to 66387a1, 20.04, 20.07, 20.03 and 20.07 s timed
out and 19.99, 19.99 and 19.33 s passed, while the native arm64 job takes 1.3 to 5 s. The test is a
loop of relinker subprocess runs over sce False and True. It now takes "plain", "sce" or "all" (the
default, so the importing tests are unaffected), and CMake registers guest_none_relocations (plain)
and guest_none_relocations_sce, each with the same 20 s limit and half the work.
@maskym

maskym commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Tested head acdbf77838 on Windows, merged alone into main 086c0686c8.

Host: Windows 11 26300, Intel i7-12700K, WinLibs GCC 15.2.0 (x86_64-ucrt-posix-seh, r6), Release, BUILD_TESTING=ON, Ninja. Reconfigured and built clean.

ctest -R '^(none_relocations|guest_none_relocations|guest_none_relocations_sce)$': 3/3 in each of 3 runs. Both new halves stay well under the 20 s limit (guest_none_relocations 4.4 s, guest_none_relocations_sce 4.5 s; none_relocations 3.3 s). Not run on Linux, macOS or a PS5.

AI-assisted: yes (Claude Code), the runs and the numbers above are from this machine.

@savvaniss

Copy link
Copy Markdown
Contributor

#15751 goes after the same timeout from the other side. It converts the 28 valid modules of each SCE variant in one relinker run per output system, so the test starts the relinker 54 times instead of 216, and every check is kept. The 168 guest artifacts are byte-identical to the ones single-module conversions write.

The two changes compose: #15751 cuts the work, and your split halves what is left. They touch neighbouring lines of main(), so the second to land needs a small rebase. If this PR lands first, I will rebase #15751 onto it.

@oneandonlydean
oneandonlydean merged commit f360403 into boykopovar:main Nov 4, 2026
14 checks passed
savvaniss added a commit to savvaniss/AnyPS5 that referenced this pull request Nov 5, 2026
Keep main's plain and sce modes from boykopovar#15526 and batch the valid modules
within each mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants