Repository navigation
fix(capture): retry crashed renderers in fresh contexts - #573
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refs #567.
crashevent and retry that viewport once in a fresh context while the browser is still connected. Reuse the existing shared browser replacement when the entire browser disconnects.attempt: 2; a persistent crash remains failed while later routes can succeed.Page.crash, pending response-body and evaluation work, and healthy later-route HTML/screenshots. Existing Page doubles gain the real event-listener contract.Evidence
Pinned Linux reproduction: Node 22.23.2, Playwright 1.62.1,
mcr.microsoft.com/playwright:v1.62.1-noble, four CPUs, 2 GiB memory, 256 MiB shared memory.source renderer crashedfailure at attempt two, zero browser restarts.memory.events:max=0,oom=0,oom_kill=0.npm test -- --maxWorkers=4: 150 files / 1,676 tests passed.npm run build: passed; both bundles regenerated.npm run test:package: passed (installed/relocated browserless and browser-backed workflows).git diff --check: passed.Generated
dist/was restored after verification per the repository's feature-PR policy.Evidence boundary
This fixes the reproduced DLA page-retry gap. It does not establish that DLA can contain the production
_CRSession._onMessagefatal assertion: ordinary neutral crashes did not reproduce that assertion, including 20 Linux crash cycles with pending work and a 100-evaluation burst. OOM and the production crash's initiating operation remain unproven.Playwright's owning callback fix is microsoft/playwright#42936, commit
132be89d216e50964a564bbe0f63c6847e8d1338: ignore late response IDs on an already-crashed session after its pending callbacks have been rejected. That guard is absent in released 1.62.1 and 1.63.0, and present on upstream main. The host-owned follow-up is to select a toolchain containing that commit, prove its late-reply regression on Linux, and rerun the live capture. This PR makes no dependency-upgrade or fatal-assertion containment claim.Execution provenance / AI assistance
Direct finalization outside Homeboy was explicitly authorized on 2026-10-06 after original Cook
agent-task-55d0b962-b052-4b97-aebe-5a5912a144eafailed. OpenAI gpt-6.1-sol via OpenCode performed scoped source investigation, neutral browser reproductions, implementation, verification, and drafted this PR. Homeboy SSH/file transport was used for the isolated Linux evidence workload; Cook did not own finalization. Chris Huber authorized the task and draft PR. Live site capture and independent binding/popup changes remain owned by the parent task.