Files
ElyOffice/tasks/reviews/M-12-r3.md
T
ZacharyZhang-NYandClaude Opus 5.5 0d4dd64640 Web pages: browsers are made at once, so none outlives its view (M-12)
make_browsers creates each browser synchronously and adopts it in the
same call, so no view waits on a browser: it leaves before creation
(skipped) or has a browser to close. The late-close branch in
on_after_created is gone. webprobe drops 5 views before the pump and
10 within 27 ms; webview.sh wants all 35 freed before the hold.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:47:45 -04:00

999 B

FAIL

crates/ely-web-content/examples/webprobe.rs:193 — The early-close regression does not ensure a drop before make_browsers. On Windows and WSL, the retained churn frees 30/30 surfaces, but every drop already has a browser; no closed surface is skipped. Removing only the pre-creation surface.closed guard, while retaining synchronous creation and adoption, still passes this probe with 30/30 released. Yet opening and dropping ten views in one GPUI update before the pump runs frees only 20/30 with that mutant, versus 30/30 with current code: the deferred close runs before creation, and the ten subsequently created browsers leak. This is a reachable ordering in the current design, unlike R2's removed asynchronous ordering. Add a deterministic pre-pump open/drop case and verify its release assertion rejects removal of the closed guard. Evidence: .work/m12-r3/{windows,linux}-no-skip-{retained,pre}-result.log; method, current-code results and cleanup: .work/m12-r3/evidence.log.