Follows #866. Filing this deliberately thin, because it happened once and I have not reproduced it — but a renderer crash seemed worth recording even without a repro, in case it matches something known.
What happened
Driving the gpu.rocks benchmark suite (30 workloads, mode: 'webasm' plus a plain-JS baseline, all inside one Web Worker) headless on Chrome 150, Apple M1 Max, branch build of #866 (11b4c0e).
Three consecutive attempts at the identical pass:
| attempt |
outcome |
| 1 |
completed all 30 rows |
| 2 |
renderer died around row 6–7 (~90 s in) |
| 3 |
completed all 30 rows |
On attempt 2 the driver's next page.evaluate threw Attempted to use detached Frame, which is puppeteer's symptom for the renderer process going away. Attempt 2 was the same build, same rows, same order as the two that passed.
What I can rule out
After it happened I instrumented the driver to sample performance.memory.usedJSHeapSize alongside the status on every poll. Across the full successful pass afterwards the main-thread heap stayed flat at 11–14 MB from row 1 to row 30, so it is not a monotonic main-thread leak. That measurement is from a passing run, though — I have no heap trace from the crash itself.
The work runs in a Worker with OffscreenCanvas, and the wasm backend under mode: 'webasm' (not the async/threaded contract), so no SharedArrayBuffer or worker pool is involved on this path as far as I can tell.
What I cannot say
- Whether it is attributable to this backend at all. It is suggestive that two prior full passes of the same suite on published 2.21.0, with every other backend and no webasm column, completed without incident — but that is three data points against two, not evidence.
- Which workload was executing. My driver only knew the last polled status, which is why I added crash-time status capture afterwards; if it recurs I will have the workload name and can update this.
If the shape of this rings a bell — a wasm instance or memory being freed while a call is in flight, say, or a rebuild after destroy() racing something — that would be more use than anything further I can measure from outside. Otherwise I will add a note here if it recurs with the workload named.
Follows #866. Filing this deliberately thin, because it happened once and I have not reproduced it — but a renderer crash seemed worth recording even without a repro, in case it matches something known.
What happened
Driving the gpu.rocks benchmark suite (30 workloads,
mode: 'webasm'plus a plain-JS baseline, all inside one Web Worker) headless on Chrome 150, Apple M1 Max, branch build of #866 (11b4c0e).Three consecutive attempts at the identical pass:
On attempt 2 the driver's next
page.evaluatethrewAttempted to use detached Frame, which is puppeteer's symptom for the renderer process going away. Attempt 2 was the same build, same rows, same order as the two that passed.What I can rule out
After it happened I instrumented the driver to sample
performance.memory.usedJSHeapSizealongside the status on every poll. Across the full successful pass afterwards the main-thread heap stayed flat at 11–14 MB from row 1 to row 30, so it is not a monotonic main-thread leak. That measurement is from a passing run, though — I have no heap trace from the crash itself.The work runs in a
WorkerwithOffscreenCanvas, and the wasm backend undermode: 'webasm'(not the async/threaded contract), so noSharedArrayBufferor worker pool is involved on this path as far as I can tell.What I cannot say
If the shape of this rings a bell — a wasm instance or memory being freed while a call is in flight, say, or a rebuild after
destroy()racing something — that would be more use than anything further I can measure from outside. Otherwise I will add a note here if it recurs with the workload named.