You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 13e6334
Browse filesBrowse the repository at this point in the historyBrowse files
fix(gc): live-worker teardown guard — no deinit under a running worker (ADR-0176)
Smell-audited: 3: ADR-0176 landed in the preceding commit (DA fork embedded); its error-unwind finding drove the deinit/env chokepoint guards on top of the exit barriers; joinAllNonDaemon renamed exitBarrier (the old name lied about its three duties); fpd ncpu gate removed with the canaries as the standing guard
root_set.live_workers counts spawner-increment → worker-final-decrement
across the whole thread lifetime (pre-register and post-unregister spans
included). thread.exitBarrier half 3 waits a bounded 50ms for epilogue
quiescence (the common case proceeds to a real graceful teardown), hard-
exiting daemon-style only for a genuinely running thunk (AD-056: cljw
exits immediately where the JVM waits). Runtime.deinit/Env.deinit guard
the error-unwind paths (broken pipe mid-print etc.) by skipping all
freeing when workers are live. CLJW_TORTURE_TEARDOWN_DELAY_MS widens the
window for the deterministic e2e canaries. Verified: pre-fix 6/32 glibc
aborts → post-fix 0/96 on the same 8x-parallel Linux harness; gc_torture
drain 0/150 regression-clean; Mac smoke green.
0 commit comments