Updated Codex Always Crash!!!

Open 💬 5 comments Opened Jun 3, 2026 by YookiTong

What version of the Codex App are you using (From “About Codex” dialog)?

26.601.21317 (build 3511) Also reproduced on 26.527.60818 (build 3437).

What subscription do you have?

Pro plan ($200/mo) 20x more usage than Plus, GPT-5.5 Pro

What platform is your computer?

_No response_

What issue are you seeing?

Title:
Codex Desktop repeatedly crashes: git worker triggers Node/V8 OOM and aborts process

Environment:

  • App: Codex Desktop
  • Bundle ID: com.openai.codex
  • Hardware: Mac16,7, Apple M4 Pro, 24GB unified memory
  • OS: macOS 26.3.1 (25D2128)
  • Crash type: EXC_CRASH
  • Termination: SIGNAL code=6 / SIGABRT
  • Triggered thread: git
  • Common stack evidence: node::OOMErrorHandler(...)
  • Pattern: 12 recent crash reports all show triggered_thread=git and node_oom=True

Crash reports:
Codex-2026-06-02-163701.ips | timestamp=2026-06-02 16:37:01 +0800 | app=26.527.60818 (3437) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-02-165418.ips | timestamp=2026-06-02 16:54:18 +0800 | app=26.527.60818 (3437) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-02-173459.ips | timestamp=2026-06-02 17:34:59 +0800 | app=26.527.60818 (3437) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-02-174410.ips | timestamp=2026-06-02 17:44:10 +0800 | app=26.527.60818 (3437) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-110703.ips | timestamp=2026-06-03 11:07:03 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-112557.ips | timestamp=2026-06-03 11:25:57 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-113710.ips | timestamp=2026-06-03 11:37:10 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-114859.ips | timestamp=2026-06-03 11:48:59 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-115955.ips | timestamp=2026-06-03 11:59:55 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-121216.ips | timestamp=2026-06-03 12:12:16 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-133215.ips | timestamp=2026-06-03 13:32:15 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True
Codex-2026-06-03-135954.ips | timestamp=2026-06-03 13:59:54 +0800 | app=26.601.21317 (3511) | exception=EXC_CRASH | termination=SIGNAL code=6 | triggered_thread=git | node_oom=True

Representative crashed thread stack from latest report:
Thread name: git
Triggered: true

app_name: Codex
timestamp: 2026-06-02 16:37:01.00 +0800
app_version: 26.527.60818
build_version: 3437
bundleID: com.openai.codex
procPath: /Applications/Codex.app/Contents/MacOS/Codex
modelCode: Mac16,7
osVersion: macOS 26.3.1 (25D2128)
incident: C0555175-7433-4D63-93AC-269FB4D4A9A4

exception:
type: EXC_CRASH
signal: SIGABRT

termination:
namespace: SIGNAL
code: 6
indicator: Abort trap: 6
byProc: Codex
byPid: 42508

legacyInfo:
threadTriggered:
name: git

TRIGGERED THREAD
id: 147863605 name: git triggered: True

00 __pthread_kill + 8 [libsystem_kernel.dylib]
01 pthread_kill + 296 [libsystem_pthread.dylib]
02 abort + 124 [libsystem_c.dylib]
03 node::OOMErrorHandler(char const*, v8::OOMDetails const&) + 344 [Codex Framework]
04 v8::ToExternalPointerTag(unsigned short) + 468 [Codex Framework]
05 v8::ToExternalPointerTag(unsigned short) + 352 [Codex Framework]
06 v8::ExternalMemoryAccounter::Update(v8::Isolate*, long long) + 39756 [Codex Framework]
07 cppgc::internal::WriteBarrier::DijkstraMarkingBarrierSlow(void const*) + 79252 [Codex Framework]
08 cppgc::internal::WriteBarrier::DijkstraMarkingBarrierSlow(void const*) + 74696 [Codex Framework]
09 cppgc::internal::WriteBarrier::DijkstraMarkingBarrierSlow(void const*) + 73400 [Codex Framework]
21 v8::internal::compiler::CompilationDependencies::DependOnElementsKind(...) + 83648 [Codex Framework]
22 v8::internal::ThreadIsolation::LookupJitAllocation(...) + 5832 [Codex Framework]
23 v8_inspector::V8ContextInfo::executionContextId(...) + 49392 [Codex Framework]
24 node::InternalCallbackScope::Close() + 412 [Codex Framework]
25 node::InternalMakeCallback(...) + 464 [Codex Framework]
26 node::AsyncWrap::MakeCallback(...) + 280 [Codex Framework]
27 node::HandleWrap::OnClose(uv_handle_s*) + 496 [Codex Framework]
28 uv_run + 528 [Codex Framework]
29 node::SpinEventLoopInternal(node::Environment*) + 464 [Codex Framework]
30 node::worker::Worker::Run() + 4848 [Codex Framework]
31 node::worker::Worker::SelfSize() const + 132 [Codex Framework]
32 _pthread_start + 136 [libsystem_pthread.dylib]
33 thread_start + 8 [libsystem_pthread.dylib]

0 __pthread_kill
1 pthread_kill
2 abort
3 node::OOMErrorHandler(char const*, v8::OOMDetails const&)
4 v8::ToExternalPointerTag(unsigned short)
5 v8::ToExternalPointerTag(unsigned short)
6 v8::internal::OptimizingCompileTaskExecutor::RunCompilationJob(...)
7 v8::internal::ThreadIsolation::JitPageReference::AllocationContaining(...)
8 v8::internal::ThreadIsolation::JitPageReference::AllocationContaining(...)
9 v8::internal::ThreadIsolation::JitPageReference::AllocationContaining(...)

Impact:
Codex Desktop repeatedly exits unexpectedly during normal use. The crash reports are consistent across multiple versions, and all point to a git worker thread aborting after Node/V8 OOM handling.

Expected:
A git/background worker OOM should not terminate the entire desktop app. Ideally the worker should fail/restart gracefully, or the app should bound git/file scanning memory usage.

Actual:
The Codex process receives SIGABRT from the git worker after node::OOMErrorHandler, causing the entire desktop app to crash.

What steps can reproduce the bug?

it seems some git memory leakage

What is the expected behavior?

_No response_

Additional information

_No response_

View original on GitHub ↗

5 Comments

bmanczak · 2 months ago

Additional repro data from another machine, matching this issue's git worker / Node-V8 OOM signature.

Environment:

  • Codex App: 26.601.21317 (build 3511)
  • Platform: Darwin 25.5.0 arm64 arm
  • macOS: 26.5 (25F71)
  • Hardware model in crash report: Mac14,15
  • Crash type: EXC_CRASH / SIGABRT
  • Termination: Abort trap: 6

Crash reports from 2026-06-03:

| capture time | incident | faulting thread | thread name | top frames |
| --- | --- | --- | --- | --- |
| 10:46:46.3957 +0200 | C89978CA-F230-4CF4-8849-93655679E278 | 49 | git | __pthread_kill -> pthread_kill -> abort -> node::OOMErrorHandler(...) -> v8::ToExternalPointerTag(...) |
| 10:56:43.8075 +0200 | 97FD07E1-6916-424A-B4DC-E4B4BDB5798C | 49 | git | __pthread_kill -> pthread_kill -> abort -> node::OOMErrorHandler(...) -> v8::ToExternalPointerTag(...) |
| 11:14:57.9655 +0200 | 819151A8-6EBA-4CFD-9074-4F0A12F224C1 | 49 | git | __pthread_kill -> pthread_kill -> abort -> node::OOMErrorHandler(...) -> v8::ToExternalPointerTag(...) |

Representative crashed-thread stack from the latest report:

Thread 49 Crashed:: git
0  __pthread_kill
1  pthread_kill
2  abort
3  node::OOMErrorHandler(char const*, v8::OOMDetails const&)
4  v8::ToExternalPointerTag(unsigned short)
5  v8::ToExternalPointerTag(unsigned short)
6  v8::internal::OptimizingCompileTaskExecutor::RunCompilationJob(...)
...
28 uv_run
29 node::SpinEventLoopInternal(node::Environment*)
30 node::worker::Worker::Run()
31 node::worker::Worker::SelfSize() const

Impact: the whole Codex desktop app exits unexpectedly. This supports the root-cause hypothesis that a Node/V8 OOM in the desktop app's git worker aborts the entire app process instead of the worker failing or restarting in isolation.

Repro status: not tied to a single deterministic command yet. It happened repeatedly during normal Codex App use in one morning/session, with no user-facing error before the app terminated.

Cloisterwood · 2 months ago

My report was #26458. Yes, this appears to be the same underlying crash signature as #26079: Codex Desktop 26.601.21317, triggered thread git, SIGABRT, node::OOMErrorHandler. My issue may add a reproduction clue: it occurs after invoking Computer Use, and my crash reports include browser-use-peer-authorization.node. I’m okay closing my issue as a duplicate if you want to track the core Node/V8 git-worker OOM in #26079, but I recommend noting the Computer Use/browser-use trigger there.

TecSong · 2 months ago

Also reproducing on the latest build 26.602.30954 (build 3575) — not memory-size dependent

Same signature as the report: EXC_CRASH / SIGABRT (code 6), faulting thread named git, stack top node::OOMErrorHandler(...) → abort() (Node/V8 JS-heap OOM inside a worker thread).

  • App: Codex Desktop, com.openai.codex
  • Hardware: Mac, 36 GB RAM (so 24 GB isn't the cause — plenty of free system memory at crash time)
  • Crash pattern: 14/14 recent crash reports (2026-06-03 → 06-05) all triggered_thread=git, node_oom=true
  • Versions affected: 26.601.21317 (3511) and the newest 26.602.30954 (3575)
  • Trigger: consistently fires at task completion (end of a turn)

Latest stack (symbolicated, faulting thread git):

abort
node::OOMErrorHandler(char const*, v8::OOMDetails const&)
v8::internal::OptimizingCompileTaskExecutor::RunCompilationJob(...)
...
node::worker::Worker::Run()

Looks like the git worker's V8 isolate hits its old-space heap limit and V8 aborts the whole process. Happy to share full .ips files if useful.

opsroller · 2 months ago

Maybe we should as CODEX to fix it.

cpkt9762 · 2 months ago

Confirming this is still happening on today's latest production build
(26.623.42026 / build 4514, published on the production appcast
https://persistent.oaistatic.com/codex-app-prod/appcast.xml at
2026-06-27 04:58 UTC). Same git-worker / node::OOMErrorHandler /
abort() signature as the original report — nothing was fixed in the
4 builds shipped between 2026-06-21 and 2026-06-27.

Adds these 4 new affected builds to the timeline

| Date (local) | App version | Build | Signal | V8 OOM in faulting frame? | Uptime (h) | Wake (h) |
|---|---|---|---|---|---|---|
| 2026-06-21 | 26.602.30954 | 3575 | SIGABRT | yes | 23.3 | 1.9 |
| 2026-06-21 | 26.602.30954 | 3575 | SIGABRT | yes | 23.3 | 2.0 |
| 2026-06-21 | 26.602.30954 | 3575 | SIGABRT | yes | 23.3 | 2.1 |
| 2026-06-21 | 26.602.30954 | 3575 | SIGABRT | yes | 23.6 | 2.2 |
| 2026-06-21 | 26.602.30954 | 3575 | SIGABRT | yes | 24.2 | 2.8 |
| 2026-06-21 | 26.616.41845 | 4198 | SIGABRT | yes | 24.4 | 3.2 |
| 2026-06-21 | 26.616.51431 | 4212 | SIGABRT | yes | 33.3 | 13.4 |
| 2026-06-24 | 26.616.81150 | 4306 | SIGTRAP† | (V8 fatal — see note) | 77.8 | 0.8 |
| 2026-06-27 | 26.623.42026 | 4514 | SIGABRT | yes | 130.6 | 15.5 |

† Incident 8 is SIGTRAP rather than SIGABRT, still in the same git
worker. Consistent with a V8 fatal-error path taken when the OOM-handler
path itself fails or an internal V8 invariant is violated during
late-stage allocation. Same root cause family.

Identical signature across all 9 incidents

Exception Type   : EXC_CRASH (SIGABRT)
Termination      : SIGNAL, Code 6, "Abort trap: 6"
ASI              : abort() called
Faulting thread  : <name="git">

Top frames:
  0   libsystem_kernel.dylib   __pthread_kill + 8
  1   libsystem_pthread.dylib  pthread_kill + 296
  2   libsystem_c.dylib        abort + 124
  3   Codex Framework          node::OOMErrorHandler(char const*, v8::OOMDetails const&) + 344
  ...
  26  Codex Framework          node::InternalCallbackScope::Close + 400
  27  Codex Framework          node::InternalMakeCallback(...) + 464
  28  Codex Framework          node::AsyncWrap::MakeCallback(...) + 280
  29  Codex Framework          node::HandleWrap::OnClose(uv_handle_s*) + 496
  30  Codex Framework          uv_run + 528
  31  Codex Framework          node::SpinEventLoopInternal(node::Environment*) + 432
  32  Codex Framework          node::worker::Worker::Run() + 4712

Environment (constant across all 9)

  • macOS 26.2 (build 25C56), Apple Silicon, Mac16,5
  • No Computer Use feature used during any of the 9 crashes (so the

browser-use-peer-authorization.node path mentioned in #26458 is not
required to trigger this
— it's just one of several entry points into
the git worker that exhausts the heap)

Why the wake-h column matters

The time-since-wake at crash spans 0.8 h → 15.5 h, which makes this look
workload-driven rather than time-driven. Combined with 7 crashes inside a
few hours on 2026-06-21 across 3 auto-updated builds, the most likely
culprit is an unbounded retained data structure inside the git Node
Worker
— a result cache / EventEmitter listener chain / Map keyed on
repo path or commit SHA that is never trimmed. The fact that
HandleWrap::OnClose is the libuv entry into the failing callback (frame
29) suggests the OOM fires when finalizing a libuv handle the worker
keeps spawning for git operations.

Suggested investigation

  1. In Codex Framework's embedded Node bundle, locate the Worker

instantiated with { name: "git" } (or workerData indicating git).

  1. Heap-snapshot that worker at 4 h, 8 h, 12 h of uptime. Watch the

retained-size growth of any cache keyed by repo path / commit SHA /
file path, plus any EventEmitter listener arrays.

  1. Audit any setInterval / setTimeout chains in that worker that

retain closures over previous results.

  1. Check whether the worker is unintentionally retaining results of every

git status / git log / git diff invocation in a Map / Array that
is never trimmed.

Privacy note for OpenAI engineers

Per-incident sanitized excerpts (exception / termination / faulting
thread frames / thread-count summary), the summary JSON, and the
sanitization script used are available on request. All PII (username,
home paths, UUIDs, IPs, MACs, deviceIdentifierForVendor,
crashReporterKey, boot session UUIDs, etc.) was stripped before
sharing; technical signature and backtraces are intact and sufficient
to debug.