Skip to content

Session restore never fires: profile.exit_type stuck at "Crashed" after a graceful quit #2435

Description

@0p9b

Summary

"Continue where you left off" never restores tabs. The preference is applied and persisted correctly, but profile.exit_type in Default/Preferences is stuck at Crashed even after a fully graceful quit, so every launch is treated as recovery-from-crash and session restore is skipped.

Session data is written to Default/Sessions/Tabs_* — it is simply never replayed.

Environment

BrowserOS 0.47.18 (CFBundleVersion 10000.0.47.18.0)
macOS 26.5.2 (build 25F84)
Arch arm64

Steps to reproduce

  1. Settings → On startup → select Continue where you left off.
  2. Open a normal tab, e.g. https://example.com.
  3. Quit BrowserOS gracefully (osascript -e 'quit app "BrowserOS"', or Cmd-Q). Wait for the process to fully exit.
  4. Relaunch.

Expected: https://example.com is restored.
Actual: only chrome://newtab/ opens. The previous session's tabs are gone.

Ran this cycle four times with the same result each time.

The preference itself is fine

It is a protected pref, correctly written to Default/Secure Preferences with a valid MAC:

"session": { "restore_on_startup": 1 },
"protection": { "macs": { "session": {
  "restore_on_startup": "82703D75AEB6…"
} } }

Re-reading chrome://settings/onStartup after a reload shows the radio still selected, and the live pref object reports restore_on_startup: 1. So this is not a pref-persistence problem.

The actual signal

Default/Preferences after a graceful quit, with the process confirmed exited:

profile.exit_type = Crashed

Chromium normally writes exit_type = Normal on clean shutdown and only auto-restores when the prior exit was clean. Here it never flips, which is consistent with the clean-shutdown path not running. profile.exited_cleanly is absent entirely.

Meanwhile the session files are current and non-trivial:

Default/Sessions/Tabs_13432083436358941   329857 bytes   (written at quit)

Not launch-method dependent

I first hit this with the app started by a launchd LaunchAgent execing the binary directly, and assumed that was the cause (no LaunchServices app lifecycle). It is not — I reproduced the identical behaviour with a plain:

open -a /Applications/BrowserOS.app

Same result under both: exit_type stays Crashed, no restore.

Note

This makes BrowserOS lossy across every restart for users who rely on session restore, which is especially noticeable when the app is configured to start at login.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions