Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hi |
|
@oneandonlydean removed, thanks; the AI-assisted checkbox stays. I took the same footer out of my other open pull requests too. |
✅ AMD GPU test: passedPR head
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)Failing on main too (7, not counted against this PR)Passed on retry (1, failed in the parallel run, passed when re-run with a 360 s timeout; not counted against this PR)Validated but not compared (2, not in the main baseline's validation pass)Validation IDs already present on main (8 IDs in 626 tests)Skipped (61)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. |
|
Hi We got this one wrong: the footer is your own text outside the template and nothing in AGENTS.md asks for it to go, so please keep it; we withdraw that request. Thanks. |
|
@oneandonlydean thanks for letting me know. I've put the footer back on this and my other open pull requests. |
ahmadmuj
left a comment
There was a problem hiding this comment.
Checked head 3109f4f6daa4d806fd6ba0143bd51063776ef66f; PR base 5b1d381d5ad5d9f923326b18479c3bd889cdd588. Control: parent 04a9eb4fa2877eb6e40bf2c83adf972e40d89b24.
Linux builds and both guest_main_stack tests pass. I also ran a separate host libgcc probe through the actual EnterGuestMainStack call, in bounded initial/adopted child processes. dladdr confirms all three unwind APIs come from libgcc_s.so.1 (14.2).
Both head cases preserve the arguments and visit three nested guest frames, then Aps5CallOnGuestMainStack, then zero IP. They return _URC_END_OF_STACK; every CFA stays inside the guest stack. Both parent controls reach EnterGuestMainStack, then die with SIGSEGV.
The emitted FDE covers [0xbf8f0, 0xbf903), including return PC 0xbf901. Its CIE marks RIP undefined, consistent with GCC's outermost-frame rule and glibc startup code. Conventions pass.
No findings in this Linux boundary change. No title, console, or Windows/macOS runtime claim.
|
Title data point: Call of Duty: Black Ops II (PPSA34502) on Linux, Ubuntu 26.04, RTX 4070 Ti, NVIDIA 615.71.09, Release libraries. Both runs were driven by hand from a fresh save.
AI-assisted: yes (Claude Code) |
|
@milescoviello thanks for the Black Ops II runs; I added PPSA34502 to the description. |
|
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.
|
What
Since #7532,
EnterGuestMainStack_nid_no_patchmoves the stack pointer to the guest main stack and calls the guest entry from inline asm (Thread.cppL263-L274). The compiler's unwind information forEnterGuestMainStackstill describes its frame on the host stack. An unwinder that returns into it from the guest entry computes a CFA past the top of the guest main stack and reads there. libc's_Unwind_Backtracefaults inLibcUnwind::Stepat0x7eeffc0e8,0xe8above the console's main stack top. Onmain04a9eb4fa2, vkQuake (PPSA99010) and RetroArch (PPSA99169) crash this way at startup. Before #7532, vkQuake exited with 0 and RetroArch stopped atsceSystemServiceLoadExecon this PC.The stack switch is now a routine of its own,
Aps5CallOnGuestMainStack_nid_no_patch, whose unwind information marks the return address undefined (.cfi_undefined %rip), as glibc's_start(start.SL57-L59: "Clearing frame pointer is insufficient, use CFI.") andclone(clone.SL92-L94) mark their outermost frames. libc's unwinder readsDW_CFA_undefinedas a return address of 0 (Unwind.hppL215,Unwind.cppL654) and stops there (L676), so a walk from the guest main stack ends at the entry with_URC_END_OF_STACK. gdb's backtrace ends there too. The routine runs the instructions the inline asm ran.guest_main_stack(both modes) now calls_Unwind_Backtracefrom the entry on the guest main stack. It checks that the walk ends with_URC_END_OF_STACK, passes at least the entry and the routine, and that no frame's CFA is above the stack top.Landing order: #15803 (with #15804 and #15807 stacked on it) wraps
EnterGuestMainStack_nid_no_patchinANYPS5_GUEST_LIFTEDon the same lines. How the two compose is on #15803 (#15803 (comment)); whichever lands second rebases.Tested
Linux Mint 22.3, kernel 7.0.0-38, glibc 2.39, GCC 13.3.0, Release,
BUILD_TESTING=ON, head onmain04a9eb4fa2(merges cleanly with currentmain):guest_main_stackandguest_main_stack_adopted: 3/3 each. On04a9eb4fa2both fail 3/3 with a segfault inLibcUnwind::Step, at the instruction where the titles crash.readelf --debug-dump=frames: the routine's CIE ends withDW_CFA_undefined: r16 (rip).04a9eb4fa2's relinker, GTX 1050 Ti under Xvfb: with04a9eb4fa2'slibkernel.prxboth segfault inLibcUnwind::Stepafter 1 s and 2 s. With thislibkernel.prx, vkQuake exits with 0 and RetroArch stops atsceSystemServiceLoadExec: /app0/picker/picker.bin without its converted executable, as before fix(linux): enter the guest entry on a main stack at the console's address #7532.tools/suite.pysplit run against a--fullrun of04a9eb4fa2: all 3828 tests on the GTX 1050 Ti, and the 932 that depend on the GPU on the HD Graphics 630 and llvmpipe. No new failure and no new skip; the HD Graphics 630 failsagc_driver_f64_rounding_denormal_modesandagc_driver_image_sample_lod_clampon04a9eb4fa2too (Mesa).check_conventions.py,check_test_registration.py,check_main_sync.pyandcheck_compile.pyare clean.pr_overlap.py --branch: the 28 open PRs that share files merge cleanly with this one, and the 9 it could not compare (they conflict withmain) change other functions ofThread.cpp.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)LibcUnwind::Steppast the guest main stack top, per milescoviello's runs on an RTX 4070 Ti (fix(libkernel): end unwinding at the guest main stack's entry frame #15691 (comment)); PPSA99010 (vkQuake) and PPSA99169 (RetroArch), catalog homebrew, back to their state before fix(linux): enter the guest entry on a main stack at the console's address #7532🤖 Generated with Claude Code