FAILURE MAP
← Case archive

FA-90704 / Garbage collector invariants / Member archive

Block offset table: first object in the card returned even when it starts after the address · case 04

Addresses at the beginning of a card are attributed to the next object.

Member previewVariant 4 · 3 implementations · 6 checks per implementation

Case contract

A contiguous heap of [start, size] objects is covered by cards of the given size. For each card the table stores the offset of the first object that starts inside the card; a card with no object start that is covered by an object from card c stores -(k - c), a direct back-skip to that card. To find the object containing address q: from q's card follow back-skips; if the card's first start lies after q, move to the previous card; then walk objects forward until one contains q (an entry that does not land on an object start yields corrupt-table). Return the table and the owner start for each query.

Why this case matters

Card scanning needs to locate object starts quickly; a stale or wrong table misparses the heap.

One recorded failure

Sample boundary fixture

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

Boundary fixtureActualExpectedOutcome
addresses just before a card-internal start{"owners": [72, 172, 172, 392, 392, 416], "table": [0, 8, 44, 0, -1, -2, 8, -1]}{"owners": [0, 72, 172, 192, 392, 416], "table": [0, 8, 44, 0, -1, -2, 8, -1]}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 ↗