Skip to content

mark_sweep: run destructors for live values on collector drop#24

Open
Flamki wants to merge 1 commit intoboa-dev:mainfrom
Flamki:fix/collector-drop-destructors-20
Open

mark_sweep: run destructors for live values on collector drop#24
Flamki wants to merge 1 commit intoboa-dev:mainfrom
Flamki:fix/collector-drop-destructors-20

Conversation

@Flamki
Copy link
Contributor

@Flamki Flamki commented Mar 5, 2026

Closes #20

This patch fixes collector teardown behavior so tracked live allocations are properly finalized and dropped when MarkSweepGarbageCollector itself is dropped.

What changed

  • Added collector teardown cleanup to drain tracked queues and run finalization/drop hooks.
  • Updated GC and ephemeron drop hooks to drop inner values (not just mark them dropped).
  • Added regression test collector_drop_runs_destructors_for_live_gc_values.
  • Kept the change focused to mark-sweep internals and tests.

Why

Arena::drop deallocates backing memory directly. Without dropping tracked live values first, destructors for GC-managed types may never run at collector teardown.

Validation

  • cargo test -p oscars --lib -- --nocapture (33 passed)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Arena::Drop leaks memory by failing to invoke destructors of GC objects

1 participant