Codex Desktop repeatedly crashes with EXC_BREAKPOINT/SIGTRAP and VM fault symptoms when git/review worker scans large generated output
Summary
Codex Desktop is repeatedly crashing on macOS. The crash pattern is not a one-off: I have multiple main-process and renderer crash reports on 2026-06-11, plus repeated codex diagnostic reports over the previous week.
Please redirect if Codex Desktop crashes should be reported somewhere other than this repo.
Environment
- App: Codex Desktop
- Codex app version in crash reports: 26.608.12217 (build 3722)
- Renderer/helper version in crash reports: 149.0.7827.54
- CLI doctor: Codex Doctor v0.139.0,
16 ok,0 fail,degraded - OS: macOS 26.5.1 (25F80)
- Architecture: Apple Silicon / ARM64
- Machine memory: 16 GB
Crash pattern
On 2026-06-11 local time, the main Codex process crashed 7 times and matching renderer helper crashes were generated around the same times.
Main Codex process:
- 02:06:00 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5;ktriageinfoincludedVM Fault hit memory shortage - 02:14:10 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5; VM faults / busy page interrupted - 02:18:24 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5; VM faults includingDidn't get back data for this file - 13:16:47 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5; VM fault / busy page symptoms - 15:16:40 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5; VM fault / busy page symptoms - 15:30:19 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5; VM fault / busy page symptoms - 15:44:15 —
EXC_BREAKPOINT/SIGTRAP,Trace/BPT trap: 5
Renderer helper:
- 02:05:57 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 02:14:07 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 02:18:21 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 13:16:45 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 15:16:37 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 15:30:16 —
EXC_CRASH/SIGABRT,Abort trap: 6 - 15:44:13 —
EXC_CRASH/SIGABRT,Abort trap: 6
There are also two Google Chrome crash reports in the same com.openai.codex resource coalition around 02:07 and 02:10, apparently from browser processes launched by Codex.
Other related diagnostics
In addition to the .ips crash reports above, macOS has generated many codex .diag reports over the last week (June 4-11). These are for /Applications/Codex.app/Contents/Resources/codex, often in the com.openai.codex resource coalition, with durations ranging from about 100 seconds to many hours. I am not pasting full diagnostics publicly because they may include local paths, but the repeated .diag reports line up with ongoing instability rather than a single isolated crash.
Suspicious Codex log events near the 02:14 and 02:18 crashes
Codex Desktop logs shortly before the crash cluster show:
- repeated app-server/remote-control reconnect attempts ending with
Remote control enrollment requires explicit authorization in settings - repeated sidecar lock waits:
Waiting to acquire lock (owned by pid=...) - active in-app browser / browser sidebar lifecycle events
- Chronicle screen capture / sparse memory frame writes
- git/review-worker commands against generated build output
The clearest actionable trigger I found is a git/review-worker workload over a large generated .next tree:
- one log line had
argsCount=25915,requestKind=review-summary,failureReason=spawnFailed, with thousands of.next/...paths - another had
argsCount=43733, alsorequestKind=review-summary,failureReason=spawnFailed - the renderer also logged
worker_rpc_response_errorwithspawn E2BIG
This suggests Codex may be expanding too many generated/untracked paths into git/review commands instead of excluding build output or chunking the command.
Expected behavior
Codex should not repeatedly crash when a workspace contains large generated output. At minimum, the git/review worker should ignore known generated folders such as .next, chunk large path lists safely, or fail gracefully without taking down the Desktop app/main process.
Actual behavior
Codex Desktop repeatedly crashes. The crash reports point to main-process SIGTRAP with VM/page-fault symptoms and companion renderer SIGABRT crashes. The app can relaunch, but the crash pattern recurs.
Workarounds tried / current state
After a reboot, codex doctor --summary showed no hard failures:
16 ok0 faildegraded- warnings included many rollout files on disk and thread inventory issues
- app-server was idle/not running in ephemeral mode
The likely local mitigation is to make sure generated directories such as .next and other QA/build artifacts are excluded from Codex/git review scope, but Codex should handle this defensively.
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Adding a current-build, simpler reproduction and a fresh crash-frequency data point from macOS. Local paths and project identifiers are intentionally omitted.
Environment
com.openai.codex(the executable and crash-report process name areChatGPT)26.715.72359(build5718)26.707.72221(5307),26.715.31251(5538),26.715.52143(5591),26.715.61943(5628), and26.715.72028(5706)150.0.7871.124on current builds26.5.1(25F80), Apple Silicon / arm64, 48 GB RAM2.50.1Frequency and crash signature
The local Crashpad database contains 60 browser-process crash sidecars from June 17 through July 22, including 33 since July 16. For those 33 events, the median interval is 3.45 hours (mean 4.35 hours). macOS retained seven full
.ipsreports from July 16-22, including two on July 22.All seven retained reports are main-process crashes with:
EXC_BREAKPOINT/SIGTRAPTrace/BPT trap: 5atPCinstruction byte streamgit; one namedChrome_IOThread, but at the same trap site/instruction streamThe two July 22 sessions crashed after 3h13m and 2h35m of uptime. This is a deliberate trap/assertion path, not a macOS jetsam kill.
The latest
gitthread stack reaches V8 serialization and Node worker messaging:Other reports in the same family reach UTF-8 decoding and
node::worker::MessagePort::OnMessage. Some upper symbols are nearest-export artifacts in the stripped framework, so the exact private function name at the trap site is not reliable; the identical PC bytes and worker/message serialization frames are reliable.Simple trigger: one very large untracked file
The strongest reproducible trigger is a single untracked, non-ignored generated gzip file of exactly
4,015,221,569bytes inside an otherwise normal Git workspace.While the workspace was open, Desktop's
review-summaryworker repeatedly ran this command shape against that one file:Each invocation ran for roughly 5.5-7.2 seconds, was logged as
aborted=true,failureReason=aborted,success=false, then retried about every 15 seconds without meaningful backoff.In the 10 minutes before the latest crash, there were 39 failed/aborted
hash-objectattempts. The last completed at09:42:34Z; the app trapped at09:42:42Z, eight seconds later, on thegitworker.The preceding July 22 crash had the same loop (39
hash-objectaborts in the final 10 minutes), followed by three abortedgit diffjobs. Each diff buffered3,866,624stdout bytes; the app trapped seven seconds after the last one.Six of the seven retained crashes had active
review-summaryGit failure/abort activity in the preceding ten minutes. Examples:| Crash |
hash-objectfailures |difffailures | Window ||---|---:|---:|---|
| Jul 18 | 49 | 95 | final 10 min |
| Jul 20 | 0 | 2 | final 10 min |
| Jul 21 (first) | 5 | 14 | final 10 min |
| Jul 21 (second) | 18 | 180 | final 10 min |
| Jul 22 (first) | 39 | 3 | final 10 min |
| Jul 22 (second) | 39 | 0 | final 10 min |
The remaining older crash had only a benign failed branch lookup in that window, so the Git loop explains most but not necessarily every occurrence.
Process cleanup leak / compounding condition
After repeated crashes, a live process inventory contained 121 executables from old Codex/ChatGPT app sessions, 101 reparented to launchd (
PPID 1), consuming about 4.3 GiB RSS in aggregate. Most stale processes were paired Crashpad handlers andbare-modifier-monitorhelpers; two oldcodex app-serverprocesses also remained detached. Some surviving helpers came from app/framework versions no longer current.This is not the direct SIGTRAP site, but it is a persistent cleanup defect and likely compounds long-running instability.
Other environmental observation
The data volume was 99% full with about 11 GiB available. That may worsen repeated hashing/temp-I/O behavior, but system memory pressure was healthy (85% free at inspection), the machine has 48 GB RAM, and every retained termination is SIGTRAP rather than an OS resource kill.
Expected behavior / suggested guards
hash-objectabort; deduplicate work and apply backoff/circuit breaking.Raw
.ipsand desktop logs are not attached because they contain local paths and workspace identifiers, but the seven crash reports can be provided privately if an OpenAI maintainer requests them.Corroborating this on a newer Codex Desktop build, with a very large monorepo but a tiny current Git status.
Environment
26.721.41059(build5848)150.0.7871.12826.5.1 (25F80)Repeated crash signature
I found seven browser-process
.ipsreports between 2026-07-26 05:44 and 2026-07-27 18:37. Five were triggered on a thread namedgitwith:EXC_BREAKPOINTSIGTRAPTrace/BPT trap: 5A sixth report triggered on
ThreadPoolForegroundWorkerin the same V8 serialization class. The recurringgitthread stack includes:The foreground-worker variant includes
v8::ValueSerializer::WriteRawBytes.Workspace scale
output/: 156 GB, approximately 274,377 files.git: 20 GB; packfiles total 14.12 GiBgit status --porcelain=v2 -zoutput: only 190 bytes (one modified file)This supports the theory that a background Git/workspace worker is producing or serializing an unbounded result even when the actual status result is tiny. Large ignored/generated trees and multiple worktrees appear to amplify the bug.
There was no macOS memory-pressure/Jetsam event around the inspected crash, and the data volume still had 48 GB free. I am not attaching the raw
.ipsfiles publicly because they include local paths and device identifiers, but I can provide sanitized stack excerpts if maintainers need more detail.Adding another current-build reproduction from macOS. This is the third time Codex has completely frozen/crashed and exited for this user.
Environment
com.openai.codex26.803.41515(build6321)Mac16,126.5.2(25F84)2026-08-10 16:24:45 -03002026-08-10 16:22:18 -0300C70FAABA-0DB3-4A88-8EDB-F81DF1FA3806Crash signature
20 Chrome_IOThreadEXC_BREAKPOINT (SIGTRAP)Namespace SIGNAL, Code 5, Trace/BPT trap: 5Codex Frameworkand includes Node/V8-related frames.Top of the crashed thread:
This looks very similar to the crash family already documented here:
SIGTRAPin the desktop app with aChrome_IOThread/ Node/V8 path. I don't have a reliable minimal trigger yet; the important new data point is that the problem is still occurring on the much newer26.803.41515build and has happened three times for this user.A full macOS crash report is available if a maintainer wants the complete stack / diagnostics.
Adding another current-build reproduction of the
Chrome_IOThread/SIGTRAPcrash family.Environment
com.openai.codex(crash-report process name:ChatGPT)26.814.41407(build6720)26.4.1(25E253)Mac15,10, Apple M3 Max, 96 GB RAM2026-08-22 19:39:06 -07002026-08-16 18:50:31 -0700Crash signature
20 Chrome_IOThreadEXC_BREAKPOINT (SIGTRAP)Namespace SIGNAL, Code 5, Trace/BPT trap: 50x124c94e34Top of the crashed thread:
The instruction stream at the faulting PC begins with ARM64
BRK #0; HLT #0; BRK #1, consistent with a deliberate fatal trap/assertion rather than an ordinary invalid-memory exception.I do not have a reliable reproduction trigger. Unlike the original report, this crash is not currently tied to a large generated tree, large untracked file, or a known Git-worker loop. The
.ipsalso does not contain an explicit memory-shortage, jetsam, orktriageinfomarker, so I cannot establish memory exhaustion as the cause.This shows that the same
Chrome_IOThreadcrash signature is still occurring on build26.814.41407. A complete crash report is available privately if an OpenAI maintainer needs it.Adding a fresh reproduction on a newer Codex Desktop build. All local paths, account details, device identifiers, workspace names, conversation IDs, prompts, and raw diagnostic files are intentionally omitted.
Environment
com.openai.codex(crash-report process name:ChatGPT)26.818.41509(build6962)151.0.7922.17026.5(25F71)Crash signature
crash, process type:browser20 Chrome_IOThreadEXC_BREAKPOINT (SIGTRAP)Namespace SIGNAL, code5,Trace/BPT trap: 5Top of the faulting thread:
The instruction stream begins with the same ARM64 fatal-trap sequence described in the earlier current-build reproduction. The nearest exported symbols in this stripped framework are not assumed to identify the exact private function.
Failure boundary
The separately running Codex app-server survived. Within roughly 0.1 seconds of crash capture it started reporting that messages were being dropped for the disconnected desktop connection. This isolates the termination to the desktop/browser shell rather than the app-server backend.
The app was manually reopened on the same app and framework build. It resumed successfully, and no second crash report appeared during the initial observation period. This was not an update-time restart.
Activity immediately before the crash
There is no reliable minimal reproduction yet. The following bounded observations may help identify the assertion path:
.ipsreport for this occurrence.This occurrence was not tied to a known large generated tree, giant untracked file, Git
hash-objectretry loop, or an observed review-worker failure. It therefore corroborates the later reports that theChrome_IOThreadtrap family can occur outside the original Git-heavy reproduction.What the diagnostics rule out
EXC_RESOURCE, jetsam, memory-shortage, or VM-fault marker appears in the retained crash report.SIGKILL,SIGSEGV, or an external process termination.Expected behavior
Concurrent streams, reconnects, or a stalled app-server request should degrade or reconnect cleanly. They should not trigger a fatal assertion in the Desktop browser process. A failed desktop connection should also avoid leaving prior helper processes detached.
Requested investigation
151.0.7922.170and inspect the underlyingChrome_IOThreadCHECK/assertion.The raw
.ipsreport and Desktop logs are intentionally not attached because they contain local paths and machine identifiers. A privately shared, sanitized diagnostic can be prepared if a maintainer needs additional fields.