Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
…s cap, which eight workers reached Podman caps a container at 2,048 processes, threads included, and the WebKit container runs every worker's browser and the tests' own child processes. At eight workers on a loaded machine the cap was reached: WebKit could not start a new page's process, so `newPage` for trackMarker's decoding page, or that page's first evaluate, waited out the test. rectMorph's on-screen proof failed 8 of 12 that way at eight workers and passed at one. `--pids-limit=-1` leaves the container the host's own limits (docker takes the same flag). Red first, on meta#8329's tree at eight workers, eight tests a run: with the cap, every run hung 8 of 8 (seven runs, including runs without the shader-cache mount, with a fresh cache, and with the decoding page in a context of its own); without it, none hung in four runs (the proof's own on-screen assertion failed 0 to 2 times, a separate matter). The harness's touch and frame-evidence self-tests pass in WebKit with the flag.
vjeux
force-pushed
the
harness/webkit-container-pids
branch
from
October 30, 2026 22:27
a3e6549 to
5c7a475
Compare
Contributor
PR Analysis Report
The exact-head preview is not available yet. Generated by PR Enrichment workflow | View current CI run |
There was a problem hiding this comment.
No issues found: --pids-limit=-1 lifts podman's default 2,048-task cap on the WebKit container, reaches the engine before the image, and matches docker's default, so no spec, CI lane or caller-facing option changes. Nothing more is needed from you for this change.
[Automated review]
cixzhang
marked this pull request as ready for review
October 31, 2026 01:46
cixzhang
requested review from
cixzhang,
imdreamrunner and
josephfarina
as code owners
October 31, 2026 01:46
This branch was successfully deployed
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.
Why
At eight workers, WebKit specs in the container stopped starting pages:
trackMarker's decoding page never opened (newPage) or never answered its first evaluate, and the test timed out. rectMorph's on-screen proof failed 8 of 12 that way at eight workers and passed at one.What led to it
Podman caps a container at 2,048 processes, threads included, and
webkit-container.mjsruns every worker's browser and the tests' own child processes in one container. At eight workers the cap was reached, and WebKit could not start a new page's process. During a hang the browsers sat at 4 to 7% CPU: blocked, not starved.Options and tradeoffs
Why this choice
--pids-limit=-1leaves the container the host's own limits. That is docker's default, so podman now behaves as docker does, and docker takes the same flag. A comment beside the flag says why.How to check it
Run eight WebKit workers on a proof that tracks a marker, for example
node internal/interaction-harness/scripts/webkit-container.mjs --workers=8 --repeat-each=8 <spec>: no test hangs innewPage.Evidence
Local gates at 5c7a475: Prettier passes on the changed file, which ESLint skips by the repository's own ignore pattern; the harness typecheck and the root build pass; the core UI suite passes; the node project passes except two process-timing cases in
packages/cli/foundation/release/cache.test.mjs, which pass when that file runs alone (34 of 34), on this head and on main; the harness browser spec passes in Chromium (51 of 51) and in WebKit (43 passed, 8 skipped) at eight workers in the container.