Summary
cargo-test is red on main: the GC write-barrier stress tests segfault deterministically.
test tenured_mutation_stress ... FAILED
test structured_clone_gc_churn_stress ... FAILED
panicked at crates/perry/tests/gc_write_barrier_stress.rs:124:
compiled binary failed (signal/segfault = missed write barrier)
old-young-edge-verifier failed: checked_old_objects=3664 checked_remembered_pages=127
checked_old_to_young_edges=37714 missing_edges=7710
first_missing_parent=0x… first_missing_slot=0x… first_missing_child=0x…
Reproduced locally (release): cargo test --release -p perry --test gc_write_barrier_stress → 2 failed.
Diagnosis
The old→young edge verifier finds ~7710 remembered-set edges missing — i.e. some object-field stores that create an old→young pointer are not emitting/registering a write barrier, so a minor GC can miss roots and free live young objects → segfault. The stress harness covers structuredClone object fields and tenured-object mutation (cf. #4886 / #4956 GC barrier work). Likely a codegen write-barrier emission gap (or remembered-set registration gap) on a store shape the audit doesn't cover.
Scope
Pre-existing on main, independent of any in-flight feature PR. Surfaced while landing #5016 (PR #5022); its diff touches no GC code. Needs dedicated GC-context investigation. Distinct from #4985 (typed_shape_descriptors).
Summary
cargo-testis red onmain: the GC write-barrier stress tests segfault deterministically.Reproduced locally (release):
cargo test --release -p perry --test gc_write_barrier_stress→ 2 failed.Diagnosis
The old→young edge verifier finds ~7710 remembered-set edges missing — i.e. some object-field stores that create an old→young pointer are not emitting/registering a write barrier, so a minor GC can miss roots and free live young objects → segfault. The stress harness covers
structuredCloneobject fields and tenured-object mutation (cf. #4886 / #4956 GC barrier work). Likely a codegen write-barrier emission gap (or remembered-set registration gap) on a store shape the audit doesn't cover.Scope
Pre-existing on
main, independent of any in-flight feature PR. Surfaced while landing #5016 (PR #5022); its diff touches no GC code. Needs dedicated GC-context investigation. Distinct from #4985 (typed_shape_descriptors).