FAILURE MAP
← Case archive

FA-90560 / Garbage collector invariants / Member archive

Ephemerons: values traced regardless of key liveness · case 05

Weak-keyed tables keep every value alive, leaking entries whose keys died.

Member previewVariant 5 · 3 implementations · 7 checks per implementation

Case contract

Ephemeron entries [table, key, value]: the value is traced only when both the table and the key are reachable; values may make further keys reachable, so iterate to a fixpoint. Keys and tables are never retained by an entry. Return the sorted live set and the [table, key] entries of live tables whose key died (to be cleared).

Why this case matters

WeakMap-style tables need fixpoint ephemeron marking or they leak or lose entries.

One recorded failure

Sample boundary fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
dead key does not retain its value{"cleared": [["T5", "K2_5"]], "live": ["K1_5", "T5", "V4_5", "V7_5", "root"]}{"cleared": [["T5", "K2_5"]], "live": ["K1_5", "T5", "V7_5", "root"]}Failed

MEMBER ARCHIVE

The complete case is available to members.

This record includes three runnable implementations, regression fixtures, execution results, and source hashes.

Member access is invitation-based. Sign in with your invited account to inspect the sources.

Sign in to the archive ↗