Repository navigation
Windows smoke test: fix the crash-loop flake - #57
Merged
Merged
Conversation
wenkaifan0720
force-pushed
the
fix/windows-crash-loop-flake
branch
from
September 24, 2026 11:39
e5c92f3 to
28a68e3
Compare
…r DNS The crash-loop case failed once in about ten CI runs (GPU mode): the victim tile never reported processGone after 8 chrome://kill navigations, and the host's log lines went only to OutputDebugString, so the run showed nothing about why. Diagnostics: - FLUTTER_CEF_LOG_FILE also appends the plugin's and every host's log lines to a file, with a millisecond tick. CI sets it per compositing mode and prints the host's crash-loop lines, or the whole log when a mode fails. - The probe logs a timeline of the victim (each kill; its page finish, load error and processGone) and runs FLUTTER_CEF_SMOKE_CRASH_ROUNDS rounds, 3 in CI, each on a fresh host. What the old case did: - The victim was an authored https page. The navigate that sends a kill clears a tile's authored document, so every reload after a kill went to DNS for a name that doesn't exist and came back as an error page. Error pages report no pageStarted, so the failure's "loaded 1 times" said nothing. - Kills went out once a second whatever the page was doing. Instrumented runs of the old loop, 70 in all, passed every time, with the host counting every kill: fresh DNS names, a reload that hangs connecting, and reloads served or failed by a local server at 0 to 2500 ms, around the next kill. The failure didn't reproduce, and the host held up in each of those timings. The fix takes the network and the fixed pace out of the case. The victim is a data: page, so its reload is local. Each kill waits for the reload it causes to finish, or for processGone, before the next; a kill that shows neither within 5 s is sent again, within a 90 s bound. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
wenkaifan0720
force-pushed
the
fix/windows-crash-loop-flake
branch
from
September 24, 2026 12:40
83ab530 to
46992b3
Compare
wenkaifan0720
marked this pull request as ready for review
September 24, 2026 12:41
Collaborator
Author
|
Rerun results for windows-build on 46992b3 (run 36000564911):
That is 6/6 attempts green and 36/36 crash-loop rounds (3 rounds per compositing mode, 2 modes, per attempt). Each round's host log shows three "renderer terminated … reloading" lines and then "giving up on this browser", with each kill sent after the previous reload's pageFinished. 🤖 Generated with Claude Code |
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.
The Windows smoke test's crash-loop case (added in #51) failed about once in ten runs. The failing run was windows-build 35989453550, GPU mode only. The victim tile got no
processGoneafter 8chrome://killnavigations; the check said "the victim loaded 1 times". The host logs only toOutputDebugString, so the run showed nothing about why.Making it diagnosable
FLUTTER_CEF_LOG_FILE=<path>makes the plugin also append its own and every host's log lines to that file, each with a millisecond tick. CI sets it for each compositing mode and prints the host's crash-loop lines ("renderer terminated … reloading" and "giving up on this browser"), or the whole log when a mode fails. It is documented in the Windows README.FLUTTER_CEF_SMOKE_CRASH_ROUNDSrounds, 3 in CI, each on a fresh host.What the logs and experiments showed
pageStarted, so "loaded 1 times" is what a passing run shows too.ERR_NAME_NOT_RESOLVEDin 60–260 ms.The fix (test only)
data:page, so its reload after a kill never goes to the network. The sentinel stays at an https origin, so the two tiles are still different sites with separate renderers.processGone, before the next goes out. A kill that shows neither within 5 s is sent again, and the whole loop is bounded at 90 s.Separate flake seen along the way (not fixed here)
In one run (35995242385) the runner's network was very slow:
example.comtook 35 s to load. AfterkOpShutdown, the software-modepipe_probehost then didn't exit within the probe's 20 s. The host had closed its pipe, so it was stuck insideCefShutdown.pipe_probe's 20 s either, andpipe_probedepends on the public internet.pipe_probe's pages locally.Verification
windows-buildpasses on this head repeatedly; the pass count is in the thread below.flutter test(280) passes,flutter analyzeis clean, andtool/check_comment_tags.shis clean.🤖 Generated with Claude Code