Skip to content

Fix browser-process crash on SPA soft navigations - #28

Merged
ragojose merged 1 commit into
mainfrom
fix/soft-navigation-crash
Aug 11, 2026
Merged

ragojose merged 1 commit into
mainfrom
fix/soft-navigation-crash

Conversation

@arzafran

Copy link
Copy Markdown
Collaborator

What this does

Navigating within an SPA-style site could crash the entire browser (reported: wakawaka.world, internal page → homepage, build 85). Symbolicating the crash against CEF's published dSYMs pinned it to Chromium, not our code: ReadAnythingSoftNavigationObserver::OnSoftNavigation() — Chrome's Reading Mode feature, shipped inside CEF without the profile infrastructure it expects — dereferences null on the first soft-navigation callback any page emits. Disabling the ReadAnything feature removes the observer.

Summary

  • bro_app.cc: append ReadAnything to disable-features, merging with the list CEF already sets (verified on a live process: --disable-features=AutofillActorMode,GlicActorUi,KillOnInvalidNavigationHeaders,LensOverlay,ReadAnything)
  • Crash was present on 151.3.14 too (same milestone) — the recent CEF bump is not the cause; the trigger is site behavior
  • Reading Mode was never reachable UI in this browser, so nothing user-visible is lost

Test plan

  • Build clean; flag verified merged on the real renderer command line
  • The reproducing navigation (wakawaka.world internal page → home) no longer crashes — needs the reporter, hands-free URL entry isn't automatable here
  • Consider filing upstream at chromiumembedded/cef so the null-check lands for everyone

Any site performing a soft navigation (History API / same-document, the
standard SPA pattern) could take down the whole browser process:
Chrome's ReadAnythingSoftNavigationObserver ships in CEF without the
profile plumbing it expects and dereferences null on the first
OnSoftNavigation callback. Root-caused by symbolicating a field crash
(build 85, wakawaka.world internal page -> home) against CEF's
published dSYMs. Disabling the ReadAnything feature removes the
observer entirely; the switch merges with CEF's own disable-features
list rather than clobbering it.
@ragojose
ragojose merged commit 465d0f6 into main Aug 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants