mirror of https://github.com/garrytan/gstack.git
close()'s launched-mode path raced browser.close() against 5s and on timeout ABANDONED the child: this.browser nulled, process handle lost, Chromium alive holding keep-alive connections into test servers whose stop() then waits forever. Reproduced twice as an intermittent (~50%) whole-suite wedge — a 44min 0.1%-CPU hang pinned by a leaked LISTEN socket, and a 400s hang with commands.test.ts teardown in flight. The child handle is now captured BEFORE the race and SIGKILLed on race-timeout (launched mode only; headed keeps context.close). Race timers are unref'd so a successful close stops pinning the caller's event loop for the window. The four browse test servers force-close keep-alives (stop(true)) as belt-and-braces. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| bin | ||
| scripts | ||
| src | ||
| test | ||
| PLAN-snapshot-dropdown-interactive.md | ||
| SKILL.md | ||
| SKILL.md.tmpl | ||