Repository navigation
cmux NEXT: no Chromium browser is made once quit began to stop Chromium (crash on quit) - #23383
Conversation
…op Chromium (red) Crash on quit in NIGHTLY 1.0.0-nightly.3953614980201: a hidden Chromium tab's content view was unhidden while AppKit closed the windows after CefShutdown, and the pane created its browser. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray
…p Chromium A pane created its browser for a hidden Chromium tab whose content view AppKit unhid while it closed the windows for termination, after CefShutdown; CEF aborts on that (crash on quit, NIGHTLY 1.0.0-nightly.3953614980201). Panes now make or duplicate a browser only while CEFRuntime.acceptsNewBrowsers (not shut down, no shutdown under way), and the shim refuses create_window, tab_add and tab_duplicate after close_all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by |
|
Owned by tab-hibernation on cosmic-gray · session |
…pped makes no browser, against a spy shim CEFShimLibrary.resolving builds the shim from stand-in functions and CEFRuntime(shim:storage:) runs panes against it without Chromium, so the test drives the crash's path: viewDidUnhide, contentDidAppear, present, ensureCreated, cmux_shim_create_window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray
|
Bead |
…Chromium tabs exits cleanly scripts/cmux-next/quit-hidden-chromium-live.py parks workspaces whose panes select Chromium tabs never made, quits through the Quit Apple event and checks the exit status, cef/app logs and crash reports. On a capture mini: base 0d7d9cb aborted 5 of 5 (CEF FATAL !IsCefShutdown, SIGABRT, Leo's stack); the fix e28bb94 exited 0 in 5 of 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray
|
Review (subagent, correctness first): SHIP at f467071 I read the diff with Quit cannot be cancelled after Chromium starts stopping.
Other ways a browser could be made after shutdown:
A refused creation leaves no stuck state. The gate returns before Spy shim: I checked every The test is reliable:
Skipping the Live script:
CI: the three reds are not this PR's. Fast gates fails on the webviews Non-blocking notes:
|
|
|
…browser is closed too (red) A creation under way at cmux_shim_close_all ends in AFTER_CREATED during the shutdown wait; the runtime registered the browser and never closed it, so the wait ran out and CefShutdown was skipped (review finding on #23383). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray
|
Shipped in:
|
… browser, so CefShutdown runs (#23445) * test(next browser): a browser Chromium makes after quit closed every browser is closed too (red) A creation under way at cmux_shim_close_all ends in AFTER_CREATED during the shutdown wait; the runtime registered the browser and never closed it, so the wait ran out and CefShutdown was skipped (review finding on #23383). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray * fix(next browser): quit closes a browser Chromium makes after it closed every browser A creation under way at cmux_shim_close_all reaches AFTER_CREATED during the shutdown wait. The runtime now closes that browser instead of registering it, so Chromium destroys its window, the wait ends and CefShutdown runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray * test(next browser): live in-flight case: a Chromium browser still being made at quit is closed, so CefShutdown runs quit-hidden-chromium-live.py --case in-flight opens front Chromium tabs in fresh profiles (their first browser waits on its request context) every 200 ms and sends the Quit Apple event into the burst, so a creation is under way when quit closes every browser; it checks the shutdown lines. On a capture mini: base 001b266 logged "CEF shutdown timed out" in 5 of 5 (a browser registered after close_all each time), the fix d2cf6de "CEF shutdown complete" in 5 of 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d2c-7e44-7fc1-abd1-eae4a427ac80&host=cosmic-gray --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Leo's NIGHTLY aborted on quit (2026-10-20 22:00, binary UUID 10cda577…). The report names 1.0.0-nightly.3953614980201, but the UUID matches the dSYM of feat-cmux-next c78e7b2 (artifact
nightly-next-dsyms-c78e7b2…, run 39529676482); 3953614980201 was only installed by the update this quit was for. Crash summary: leo-workspacebriefs/2026-10-20-gui-push/crashes/2026-10-20-2200-quit-cef-create-window.txt.What happened
Symbolicated with that dSYM:
The sequence:
applicationShouldTerminate: it closes every browser, waits for them, then callsCefShutdown.viewDidUnhide.ensureCreatedonly checked that the shim was loaded.Fix
CEFRuntime.acceptsNewBrowsersis false onceshutdownhas started (the browsers are closed and Chromium is being waited on) or after CefShutdown. It is also false when quit came while the library was still loading.CEFPaneHost.ensureCreatedandduplicatemake no browser unless it is true. A tab whose view appears at that point simply stays empty, since the app is exiting.cmux_shim_close_all,cmux_shim_create_window,cmux_shim_tab_addandcmux_shim_tab_duplicatereturn 0. This covers any path that reaches Chromium without going through the pane. The public header is unchanged, so the shim ABI identity is unchanged.Overlap check:
Neither touches this path.
Tests
CEFQuitCreationTests/aParkedTabUnhiddenAfterChromiumStoppedMakesNoBrowser: the crash's path, against a spy shim.CEFShimLibrary.resolvingbuilds the shim from stand-in functions, andCEFRuntime(shim:storage:)runs panes against it without Chromium.cmux_shim_create_windowcalls.CEFQuitCreationTests/noBrowserIsMadeOnceChromiumBeganToStop: checksacceptsNewBrowsersin each state (committed red first, e528869).scripts/cmux-next/quit-hidden-chromium-live.py.Changelog
No capture: nothing on screen changes; the app quits without aborting.
Observed / Not run
cmux-ci run --class light --script scripts/ci/package-test-lane.sh --arg suite --arg Packages/macOS/CmuxNext --arg CEFQuitCreationTests,...). Both refs included fix(next tests): PaletteMenuVocabularyTests compiles again #23386, which base needed for its test target to compile; it has since landed.try unhideParkedTab(runtime) == 0: base makes a browser after CefShutdown. The check that a browser is made while Chromium runs passes.CEFQuitCreationTests,CEFRuntimeSourceTestsandCEFShimABITestspass.cmux-ci build cmux --backend-mode local):Check failed: !IsCefShutdown()in app.log,CEF shutdown completelogged before the abort, and Leo's stack (crash reportcmux DEV-2026-10-21-053300.ips; macOS held back reports for the repeats).cmux-ci build cmux --ref f4670712048, job aa7af3dc31d4; it builds the shim from source). GitHub's compile jobs were still queued for runners. Review: SHIP at f467071 (comment 6316538458). Reds are base reds:fast gates(webviewscheck:text-focus) anddefaults-snapshot(menu rows) also fail on base pushes 0a4548e and 0b1a93e.project:cmuxterm-macosforIsCefShutdownorcmux_shim_create_window.Agent session: cosmic-gray
🤖 Generated with Claude Code