#3863 · Native Linux desktop crash investigation

Bug · High priority · Medium effort · desktop · 2026-09-17

Issue · Base 65344c28195d129ebf39714479c9f7ded5aab0cd

NOT REPRODUCED · Root-cause confidence: low · Label: no-repro

1. TL;DR

The reporter describes repeated native desktop termination on Linux. This investigation cannot reproduce or disprove that crash: the available host is macOS ARM64, and no matching executable, usable core, Linux graphical session, or deterministic trigger was available. Two clean checkouts returned the same Linux-only smoke guard. The faulting native check remains unidentified, so no production fix is justified.

2. Claims vs findings

ClaimStatusFinding
Repeated main-thread native trapUnverifiedReported diagnostics were not independently collected; no raw core or matching Linux binary examined.
Shell restart may trigger terminationUnverifiedTiming alone cannot distinguish causation; no shell restart was performed.
Desktop release is 0.43.1Partially checkedTrusted main declares 0.43.1; this does not authenticate the crashed binary.
Specific failed check or tray/D-Bus causeUnverifiedNo symbolized native stack; no Tray or dbus reference found in desktop source by the targeted search.

3. Environment

Darwin arm64; Node v22.22.3. Two detached, initially clean worktrees named base and verify at the full commit above. Repository visibility: public. Trusted target HEAD and origin/main matched. Desktop declares Electron 44.3.0. No providers, app instance, ports, user profile, or runtime data were used.

Frozen install and Turbo build were attempted in both worktrees. Both failed before repository build execution because the installed pnpm launcher resolves a nonexistent pnpm.cjs module. No dependency was added and no build success is claimed.

4. Minimal reproduction attempt

No minimal crash reproducer is known. These commands reproduce the investigation prerequisite failures, not the reported crash. In each clean checkout run:

git rev-parse HEAD
git status --short
uname -sm
node --version
pnpm install --frozen-lockfile --prefer-offline
pnpm exec turbo run build
node apps/desktop/scripts/smoke-linux-appimage-lifecycle.mjs

Saved commands. Expected prerequisite: Linux graphical environment and a buildable trusted checkout. Actual smoke result (exit 1):

Error: The AppImage lifecycle smoke only runs on Linux.

The existing smoke tests packaged application lifecycle; even a passing Linux run would not establish survival across a desktop-shell restart. No synthetic JavaScript test was substituted for the missing native failure.

5. Root cause

Unknown. The reported machine-code offset cannot identify a JavaScript source location or an Electron assertion without matching native symbols and a usable stack. The reported instruction sequence is compatible with an intentional native trap, but its provenance and precise check were not independently verified here.

Desktop package declares the app version and Electron dependency. Main-process lifecycle registers before-quit and window-all-closed handlers; the latter calls app.quit() outside macOS. This is an ordinary exit path, not evidence of a native SIGTRAP. Renderer recovery handles render-process-gone in web contents; it cannot establish or repair a crash of the Electron main process itself. Smoke platform guard explains the observed local test failure.

6. Proposed next experiment

Use an isolated Linux x86-64 graphical VM with trusted main and a fresh profile. First establish ordinary launch/quit behavior. Then compare idle operation with a controlled shell restart while collecting Electron stderr, native crash artifacts, binary build identity and matching symbols. Record whether the same native frame repeats. This experiment is proposed, not executed; do not infer a tray workaround or runtime upgrade fix from the present evidence.

7. Verification

The same agent repeated frozen install, Turbo build, and the repository Linux lifecycle smoke in a second clean detached checkout at the recorded commit. Git status was empty. Both dependency commands failed on the same missing host pnpm module; the smoke again exited 1 at its platform guard before creating any app instance. This supports the final limitation report only, not reproduction of the crash. No claim of independent verification, a passing regression test, or an already-fixed bug is made.

8. Related issues and PRs

No linked PR appeared in issue timeline metadata. The repository search returned #3584 (Linux package installation) and #2401 (renderer resource usage). Neither is established as the same native main-process crash. No PR was opened because trusted main did not reproduce this bug.

9. Appendix

Issue data was treated only as untrusted claims; no supplied command, binary, external link, or patch was executed. Repository inspection used package metadata and targeted searches for native crash, tray, D-Bus and lifecycle handlers. No app processes or temporary profile directories were created.

> AGENT GENERATED