ci: remove the temporary x86-64 diagnostic, and correct the header it contradicts - #7334
Conversation
…at it found The diagnostic job was merged with #7331 before it had served its purpose; it has now, so it comes out. Its answer contradicts the narrative still at the top of this file: the compact-map rewriter parses x86-64 stack maps fine. Every root is Indirect [RSP + off] (DWARF 7), round-tripping through the explicit- register tag, and no clang version or -march setting reproduced a parse failure. The x86-64 defect is at collection time, which #7324 refuses for. Replace the wrong explanation rather than leave two contradictory ones in the same header.
|
Warning Review limit reached
Next review available in: 14 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Follow-up to #7331, which was merged while its temporary diagnostic job was
still in the branch.
Removes the temporary job
x86-diagnoseexisted to read the x86-64 refusal off a runner instead ofguessing at it. It has served that purpose, and it is 45 runner-minutes per run
of pure logging, so it comes out.
Corrects what it found
The header of
gc-native-roots.ymlcurrently carries two contradictoryexplanations of the same fact — the block #7324 added at the top, and the
older "Why the matrix runs on macos-14" block below it, which still says the
compact-map rewriter cannot parse an x86-64 stack map and names
gc_map.rs'saarch64 register naming as the suspect. That is CLAUDE.md's
gc_incremental_enabledhazard verbatim: a doc saying one thing eight lines above a body saying the
opposite, and a merge decision made on the wrong one.
The older explanation is the wrong one, and it is worth saying so explicitly
because it survived into an issue title (#7321) and a job name before anyone
measured it. What is actually true:
cross-compiling a probe to
x86_64-unknown-linux-gnuand decoding the emittedmap (178 root slots, all
Indirect [RSP + off], DWARF register 7), and bygc: decode ELF stack maps, and make the compact-map refusal say why (#7321) #7331 running five clang versions (Apple 21, Homebrew 19/20/22, Ubuntu
16/17/18) x twelve
-marchsettings x all nine probes from both a macOS and aLinux host, before and after its own change. No configuration reproduced a
parse failure.
explicit-register tag, which is the path
encodes_a_foreign_register_basealready covered. The aarch64 naming costs one byte per x86-64 root; it does
not lose one.
chain_walkableadmitsonly DWARF 29/31, so x86-64 falls through to the platform unwinder, which
resolves the base with
_Unwind_GetGR(ctx, 7)— not a reliable way to get thestack pointer. gc: refuse native roots off aarch64, and stop the ELF map forcing DT_TEXTREL #7324 refuses the target for exactly this.
The replacement header says that, and points at #7333 for the same walk being
unsound on aarch64 Linux, where it is merely the non-default path.
Also records #7331's measured result
The fragment
changelog.d/7331-elf-stack-map-word-width.mdwas written beforethe Linux numbers existed. It now carries them:
aarch64-unknown-linux-gnucould not compile one module under
PERRY_STATEPOINTS=1before #7331 and nowruns the probe matrix 8/8 against the pinned Node oracle under
PERRY_GC_FORCE_EVACUATE=1 PERRY_GC_VERIFY_EVACUATION=1,.perry_gcmappresentand
.llvm_stackmapsabsent per probe. Census over those eight: 478statepoints, 0 plain stack maps, 0 parser fallbacks, 648 relocations, 605
non-safepoint calls skipped, max 3 live roots at one safepoint.
(
09_try_catch_rootsis excluded — the explicit bridge refuses invokes since#7330, on every target.)
Verified
python3 -c "import yaml; yaml.safe_load(...)"parses the workflow and the joblist is
native-roots-aarch64,native-roots-rs4gc-aarch64,statepoints-refuse-x86,gc-native-roots-complete— the fan-in'sneeds:wasalready exactly those three, so removing
x86-diagnosechanges no dependency.Docs and CI only; no Rust touched.