Codex App freezes when Crashpad retains a dead GPU process
App version
26.707.31428 (Electron 42.1.0)
Environment
Observed on NixOS 26.11, Wayland (Linux 6.18.37 x86_64).
Issue
The UI stopped updating while the app-server remained alive. GDB showed Electron's main thread blocked indefinitely in:
wait4(<dead GPU PID>, status_ptr, 0, NULL)
The GPU process was a zombie (exit status 2) still ptrace-owned by chrome_crashpad_handler; no dump completed. Electron therefore stopped draining app-server stdout/stderr, filling both socket send queues (~131 KiB each).
The bundled Electron binary is stripped, so the Electron caller above wait4 could not be symbolized.
Reproduction
Not deterministic: run Codex App until the GPU process crashes while Crashpad is active, then inspect the frozen browser process and dead GPU child using ps, /proc/<pid>/status, and GDB.
Expected
A crashed GPU process or stuck Crashpad handler must not block Electron's browser thread or freeze app-server IPC.
Confirmed recovery
Sending SIGTERM only to the stuck Crashpad handler released/reaped the GPU zombie, returned Electron from wait4, drained both IPC queues, spawned a replacement --type=gpu-process, and restored the UI without restarting Electron or the app-server.
Please also consider a startup option that skips crashReporter.start() entirely. uploadToServer: false still collects dumps, and Crashpad cannot be disabled after startup.