writeonce/runtime/src
shoney.arickathil ed45ac7c06 fix(arena): poison-on-free — a freed block can never pass for a live object (language 44)
- wo_arena_free stamps the header: class_id = WO_CLS_FREED (0xFFFFFFFF), shard_id = 0xFFFF, flags/pad = 0
- freelist link moves from offset 0 to offset 8 so the poison survives on the list; wo_arena_alloc pops from offset 8
- wo_drop_obj aborts first on a poisoned header: a double free is a diagnostic, not a catchable state
- WO_CLS_FREED defined in wob.h beside the builtin id space
- test_arena: test_poison_on_free (poison stamped, LIFO chain through the relocated link, class drains to a fresh bump) — 17/0
- full suite SUITE_ALL_ZERO, wovm + wovm_asan rebuilt, just db-actor 10/0 (lang-41 5x marshal gate unchanged)
- story 44 status: done; board row + dependency graph L44 (41 -.follow-up.-> 44)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 78ae3be403ba533db6f0e181bff201717f789a30)
2026-09-15 01:16:13 +02:00
..
.gitkeep feat(runtime): wovm VM core (Iteration 2) 2026-08-10 09:35:55 +02:00
borrow.c feat(runtime): wovm VM core (Iteration 2) 2026-08-10 09:35:55 +02:00
borrow.h feat(runtime): wovm VM core (Iteration 2) 2026-08-10 09:35:55 +02:00
builtin.c feat(tls): net.accept_tls — inbound TLS 1.3 termination (rv2 9 phase G3) 2026-09-15 01:16:13 +02:00
builtin.h feat: iterations 19 + 17 — Float/Bytes scalars (.wob v5), library kind + internal/ 2026-08-20 19:24:15 +02:00
CODE-LOGIC.md docs(audit): fix stale docs against the code (TLS, net.connect, RNG, lang-41); jarvis deps 2026-09-15 01:16:13 +02:00
cont.c feat: cross-shard actors — placement, envelopes, home-routed frees, WO-E222 (arc T6) 2026-08-20 12:06:13 +02:00
cont.h feat(runtime): wovm VM core (Iteration 2) 2026-08-10 09:35:55 +02:00
crypto.c fix(crypto): branch-free EC signing ladder via complete addition (rv2 9 follow-up) 2026-09-15 01:16:13 +02:00
crypto.h feat(crypto): private-key DER parsing (rv2 9 phase G3a) 2026-09-15 01:15:52 +02:00
gc.c fix(arena): poison-on-free — a freed block can never pass for a live object (language 44) 2026-09-15 01:16:13 +02:00
gc.h feat(runtime): incremental tri-color mark-sweep replaces RC (7b Phase 3a) 2026-08-19 16:52:48 +02:00
json.c feat: iterations 19 + 17 — Float/Bytes scalars (.wob v5), library kind + internal/ 2026-08-20 19:24:15 +02:00
loader.c feat(tls): net.accept_tls — inbound TLS 1.3 termination (rv2 9 phase G3) 2026-09-15 01:16:13 +02:00
loader.h feat: secondary indexes + @unique trap (iteration 9, Task 4; wob v3) 2026-08-15 12:57:32 +02:00
main.c fix(runtime): don't deref a poisoned class's NULL fmap during migration 2026-09-15 01:15:30 +02:00
obj.c fix(arena): poison-on-free — a freed block can never pass for a live object (language 44) 2026-09-15 01:16:13 +02:00
obj.h feat: iterations 19 + 17 — Float/Bytes scalars (.wob v5), library kind + internal/ 2026-08-20 19:24:15 +02:00
park.c feat(rt2): signal.on — latched signals become Signal records for actors 2026-09-15 01:15:30 +02:00
park.h feat: arc stage 3 T7 — transparent DB actor (WO_T_DB hole closed) 2026-08-21 13:10:26 +02:00
sysio.c fix(tls): send close_notify on TLS close (rv2 9 follow-up) 2026-09-15 01:16:13 +02:00
tls.c feat(tls): net.accept_tls — inbound TLS 1.3 termination (rv2 9 phase G3) 2026-09-15 01:16:13 +02:00
tls.h feat(tls): net.accept_tls — inbound TLS 1.3 termination (rv2 9 phase G3) 2026-09-15 01:16:13 +02:00
vm.c fix(vm): marshal cross-shard actor messages (language 41) — the double free 2026-09-15 01:16:13 +02:00
vm.h feat(tls): net.accept_tls — inbound TLS 1.3 termination (rv2 9 phase G3) 2026-09-15 01:16:13 +02:00
wob.h fix(arena): poison-on-free — a freed block can never pass for a live object (language 44) 2026-09-15 01:16:13 +02:00