Repository navigation
Conversation
Unbound copies next to eboot concurrently LoadLibrary the same PE and leave Job0 with a null vtable; reuse the already-loaded nested guest module instead. Co-authored-by: Cursor <cursoragent@cursor.com>
jotitadev
left a comment
There was a problem hiding this comment.
Linux run (Ubuntu 26.04, Intel i7-8700, GCC 15.2, full build, non-GPU tests), head 83e675746 merged onto main 44df21632.
- Builds;
guest_dynamic_loaderandguest_dynamic_loader_fixed_basepass, including the new nestedprx/Engine.Render.prx.guest.prxcase. - With
General.cppfrommainand the PR's test, both abort atGuestDynamicLoader.cpp:109(Require(nested != nullptr), the nested load), so the test protects the change on Linux too.
Non-GPU suite (ctest -E "^agc"): same result as main; only file_writer_binary and file_writer_text fail, and they fail on main too on this machine (Ubuntu 26.04 coreutils).
Written with AI assistance (Claude Code). I ran the builds and tests above on my machine.
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Thanks, the change looks right for the layout it targets (a converted copy in
#6226 changes the same function ( The branch is about 600 commits behind main, so please rebase onto current main before we run CI. |
|
@notaxeltv a heads-up for the rebase: #8626 has just merged and changed |
|
@notaxeltv: oneandonlydean's review of 17.10. asks for the same directory first and a case-insensitive nested lookup, and #8626 changed The order is now: exact name, then the module's own directory ignoring case, then Measured with
Not tested: macOS, a title run. |
|
@xXPBSXx thanks, I went through @notaxeltv you can take it as is by resetting your branch to it (that needs a force-push, since it's rebased onto current |
|
notaxeltv: as offered above and agreed in the review, with no answer for over 24 hours I opened #10494 from the branch AI-assisted (Claude Code). |
|
@notaxeltv This PR now conflicts with main in |
|
@notaxeltv I'm closing this in favour of #10494, which carries your commit unchanged (with your authorship) and adds what I asked for on 17 Oct: own directory first, then |
What
RelinkedModulePathonly rewrotepath→path.guest.prxin the same directory. Titles that keep unboundEngine.*.prxnext toeboot.binwhile the converted PE lives underprx/*.guest.prx(the layout #3123 documents) thenLoadLibrarythe same binary twice on Windows; the second image's vtables stay unbound andJob0inEngine.Render.Core2jumps to null.After the same-directory
.guest.prxmiss, look underprx/,sce_module/andsce_modules/next to that path for the same filename before the existing case-insensitive match. Orthogonal to #6226 (stem match in the same directory).Tested
Windows 10, WinLibs GCC 15.2.0.
guest_dynamic_loaderpasses (covers nestedprx/Engine.Render.prx.guest.prx).tools/check_conventions.py --base upstream/mainpasses. PPSA03541 with separate unbound root copies and nested guests: past Job0, presents HDR10, then aborts onCOPY_DATAGDS (not implemented) — no null rip on Job0.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)Made with Cursor