Skip to content

Settings > Linux desktop can crash with generic error after GNOME lock/unlock #892

Description

@psypeal

Summary

After returning from a prolonged GNOME screen lock, opening Settings > Linux desktop can render only the generic error boundary:

Oops, an error has occurred

This was observed on the same session where tray Quit later stopped responding. The two symptoms may share a damaged Electron/WebContents resume lifecycle, but they are reported separately because that relationship is not yet proven.

Environment

  • OS: Ubuntu 24.04.4 LTS
  • Desktop: Ubuntu GNOME
  • Session: X11
  • Kernel: 6.8.0-134-generic
  • Package format: deb
  • codex-desktop-linux: 0.9.5 at 2e04d928babaf09b321c870f4d8b9befd28921a5
  • Installed package version: 2026.07.12.122632
  • Electron: 42.1.0
  • Upstream Codex app: 26.707.51957
  • Optional Linux features: none

Steps observed

  1. Start Codex Desktop normally.
  2. Lock the GNOME desktop for an extended period.
  3. Unlock and return to the existing app instance.
  4. Open Settings.
  5. Select Linux desktop.

Actual behavior

The settings route displays only:

Oops, an error has occurred

Expected behavior

The generated Linux Desktop settings page should render its launcher, tray, warm-start, update, and build-information controls after session resume.

Build and static checks

The installed patch report records keybinds-settings as applied. The generated asset:

/opt/codex-desktop/content/webview/assets/linux-desktop-settings-linux.js
  • passes node --check;
  • has all referenced module exports present;
  • imports successfully in an ESM runtime;
  • returns a valid React element when LinuxDesktopSettings({}) is evaluated.

The existing generated-page unit test also passes, but it renders simplified mocked components and does not exercise the real Electron suspend/resume lifecycle.

Runtime observations

The launcher log contains repeated lifecycle errors around affected sessions:

MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 destroyed listeners added to [WebContents]
Error occurred in handler for 'codex_desktop:message-from-view': TypeError: Object has been destroyed

The generic error boundary does not currently log the renderer exception or component stack to launcher.log, which prevents identifying the exact crashing component.

Possible direction

  • Log the Linux Desktop route error-boundary exception and component stack.
  • Validate or recreate destroyed auxiliary WebContents after unlock/resume.
  • Add a real-browser/runtime smoke test for the generated settings route instead of relying only on mocked component rendering.
  • Expose recent Linux lifecycle diagnostics on the page when it can render.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions