fix(drift-trio): pin fiber slot across asyncify parks (#10b layer 1)
Symbolized (HOIST_KEEP_NAMES=1): the trap is on the asyncify REWIND re-entering the fiber — stack-local COROUTINE+body were destroyed when Call() returned early on a park, so the rewind called through freed objects (latent UB in the ORIGINAL fire-and-forget runOnFiber too). Heap-pinned FiberSlot + explicit done flag + fiber-tail re-drain. Layer 2 (rewind interplay) still open — fuzz stays fixme'd; pageerror stacks now captured in fuzz artifacts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G5cAM9M6q34n5X4dbrfVvi
This commit is contained in:
parent
3fc90e8fe2
commit
22cd32b7b2
2 changed files with 76 additions and 11 deletions
|
|
@ -438,7 +438,9 @@ for (const [cfg, label, mkActions, seedReg] of [
|
|||
const t = m.text();
|
||||
if (/collab|drift|parse|error|abort/i.test(t)) consoles[tabLabel]!.push(t.slice(0, 400));
|
||||
});
|
||||
page.on("pageerror", (e) => consoles[tabLabel]!.push(`PAGEERROR ${e.message}`));
|
||||
page.on("pageerror", (e) =>
|
||||
consoles[tabLabel]!.push(`PAGEERROR ${e.message}\nSTACK ${(e.stack ?? "").slice(0, 4000)}`),
|
||||
);
|
||||
}
|
||||
const actions = mkActions();
|
||||
const reg = seedReg();
|
||||
|
|
|
|||
Loading…
Reference in a new issue