Skip to content

gc: two rooting gap tests crash on macOS under PERRY_NO_AUTO_OPTIMIZE=1 while Linux passes them (untriaged) #7606

Description

@proggeramlug

Found in passing during #7599's known-failures audit, on the shared dev Mac
(macOS arm64, perry-dev profile, current main of 2026-08-08):

test_gap_gc_rest_argument_rooting and
test_gap_gc_same_module_call_argument_rooting crash on macOS when compiled
with PERRY_NO_AUTO_OPTIMIZE=1
, while Linux (the gap_snapshot baseline
platform) records both as passing.

Not yet triaged — this issue exists so the observation is not lost. Three
things whoever picks it up should know:

  1. These are gc rooting acceptance tests (the gc(layer 3): from-space quarantine catches 55 stale dereferences across the gap suite — the instrument is in CI but aimed at one synthetic fixture #7341 family), so a platform-
    split crash is potentially a real macOS-only rooting hole, not a harness
    quirk — the auto-opt and no-auto-opt runtimes differ in feature set and
    link layout, and the no-auto-opt arm is the one ordinary perry compile
    users get when the auto-opt path is bypassed.
  2. test_gap_gc_same_module_call_argument_rooting has crashed spuriously
    before — during a disk-full window on 2026-08-07 it recorded a crash that
    re-ran 10/10 clean afterwards (fix(runtime): a Map/Set subclass in a base-typed binding was read as a raw header (#7570) #7573's report). First step is therefore
    reproduce N/N on a healthy machine before believing it; the test(parity): make known_failures.json a ratchet, not a suppression list (#7582) #7599 agent
    saw it in passing, not under controlled conditions.
  3. If it reproduces, the instruments are PERRY_GC_ZEAL=1 PERRY_GC_PROTECT_FROMSPACE=1 PERRY_GC_DIAG=1 — but note gc: zeal + compiled loop polls performs zero copying minors on compute-only benches — green instrument runs may be vacuous #7604: on
    compute-only shapes the zeal recipe can arm without ever firing, so check
    retired_set= lines actually appear before trusting a clean run.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions