Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/7092-gc-test-copied-count.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**GC test de-flaked on macOS** — `large_object_old_born_array_slot_write_keeps_young_child_alive` asserted an exact whole-nursery `copied_objects == 1`, which fails on hosts whose startup allocations stay reachable through the dirtied old page (4249 observed on macOS arm64, #7060). The child-specific relocation is already pinned by the `rewritten` asserts, so the exact count is now a lower bound. Test-only change; no runtime behavior affected.
8 changes: 7 additions & 1 deletion crates/perry-runtime/src/gc/tests/copying.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1310,7 +1310,13 @@ fn large_object_old_born_array_slot_write_keeps_young_child_alive() {
assert_copied_minor_trace(&trace, true, CopiedMinorFallbackReason::None, false);
assert_ne!(rewritten, child);
assert!(crate::arena::pointer_in_nursery(rewritten));
assert_eq!(trace.copying_nursery.copied_objects, 1);
assert!(
trace.copying_nursery.copied_objects >= 1,
"minor must copy at least the young child; copied_objects is a whole-process \
count and host startup can leave other young objects reachable through the \
dirtied old page (4249 observed on macOS arm64, #7060) — the child-specific \
relocation is pinned by the `rewritten` asserts above"
);
assert!(
remembered_set_size() > 0,
"old-to-survivor edge must remain remembered after copied minor"
Expand Down
Loading