FAILURE MAP
← Case archive

FA-90763 / Garbage collector invariants / Member archive

TLAB: refill waste limit reset instead of raised · case 03

After a slow-path allocation the limit collapses, so a thread keeps retiring buffers too eagerly or never adapts.

Member previewVariant 3 · 3 implementations · 8 checks per implementation

Case contract

Bump allocation through a thread-local buffer (TLAB). Requests are rounded up to 8 bytes. Requests larger than half a TLAB go straight to shared eden. Otherwise allocate in the TLAB when it fits (end inclusive). If not, and the TLAB still has more free space than the refill waste limit, allocate this object in eden, keep the TLAB and raise the limit by waste_inc; else retire the TLAB (its remaining space counts as waste) and carve a new TLAB from eden. Eden allocations fail (None) when they would end beyond eden_end. Return addresses, total waste, eden top and the final limit.

Why this case matters

Allocation fast paths decide heap layout and GC frequency; boundary slips waste memory or overlap objects.

One recorded failure

Sample boundary fixture

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

Boundary fixtureActualExpectedOutcome
regression: refill, slow path and adaptation{"addrs": [0, 40, 80, 128, 144, 168, 176, 256], "limit": 8, "top": 320, "waste": 8}{"addrs": [0, 40, 80, 128, 144, 168, 176, 256], "limit": 24, "top": 320, "waste": 8}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 ↗