Reproducible zombie-process and file-descriptor leak in ChatGPT/Codex macOS desktop app — build 26.730.61639

Resolved 💬 1 comment Opened Aug 6, 2026 by Sha2473 Closed Aug 7, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

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

26.730.61639

What subscription do you have?

Pro 20x

What platform is your computer?

macOS 14.2.1

What issue are you seeing?

The current ChatGPT/Codex macOS desktop build appears to leak zombie child processes and file descriptors shortly after launch.

This is reproducible from a fresh application session. Fully quitting and reopening ChatGPT does not resolve it. The new process begins accumulating zombies and descriptors almost immediately, eventually approaching a local resource limit and causing macOS process creation to fail with:

EAGAIN
Resource temporarily unavailable

Previous failures prevented the system from launching /bin/ps, shell startup commands, Git HTTPS helpers, and Codex subprocesses.

Fresh-session reproduction evidence

ChatGPT was fully quit and reopened.

New main ChatGPT process:

PID: 3280
Version: 26.730.61639
Build: 6234

After only 2 minutes 17 seconds:

Zombie child processes: 67
Open numeric file descriptors: 239

A few moments later:

Zombie child processes: 94
Open numeric file descriptors: 245

The zombie count increased by 27 during this brief observation period.

The apparent soft file-descriptor limit was:

256

At 245 descriptors, the ChatGPT process was using approximately 96% of that apparent limit shortly after launch.

Previous-session evidence

Before the fresh-session test, the earlier ChatGPT process exhibited:

Zombie child processes: 175
Open numeric file descriptors: 244

The zombie count increased from 117 to 175 while being observed.

ChatGPT/Codex logs repeatedly contained:

electron-sampler: spawn /bin/ps EAGAIN

The message appeared approximately every 30 seconds.

Eventually even a new Terminal session could not start external commands:

/etc/zprofile:7: fork failed: resource temporarily unavailable
/Users/shafeeqgaba/.zprofile:2: fork failed: resource temporarily unavailable
/etc/zshrc:7: fork failed: resource temporarily unavailable
zsh: fork failed: resource temporarily unavailable
Reproduction steps
Fully quit ChatGPT using ChatGPT → Quit ChatGPT or ⌘Q.
Confirm the ChatGPT process has exited.
Reopen ChatGPT desktop build 26.730.61639.
Start or resume a Codex repository task.
Monitor child processes owned by the main ChatGPT process.
Monitor numeric file descriptors owned by the same process.
Observe zombie children and descriptors accumulating rapidly.
Continue until helper-process launches begin failing with EAGAIN.

The fresh-session measurements demonstrate that this is not stale state inherited from the previous ChatGPT process.

Expected behaviour

The desktop application should:

Reap all exited child processes.
Close file descriptors when helper operations finish.
Avoid accumulating zombie processes.
Keep Electron monitoring and sampling helpers bounded.
Continue launching /bin/ps, Git helpers, shells, and Codex subprocesses during long sessions.
Recover cleanly when a helper process exits or fails.
Actual behaviour

The main ChatGPT process rapidly accumulates:

Zombie (<defunct>) child processes.
Open numeric file descriptors.
Repeated failed attempts to spawn /bin/ps.

As resource usage approaches the apparent descriptor limit, macOS begins rejecting additional process launches with errno 35 / EAGAIN.

Operational impact

The issue has interrupted sensitive Codex workflows by preventing:

Shell commands from launching.
ps from launching.
Git HTTPS helpers from launching.
Git remote checks.
Commit and push workflows.
Local validation tools.
Codex authority attachments from being read.
Evidence-capture processes.
Potential future PAC or Microsoft authentication helpers.

The repository governance system stopped fail-safe before affected operations launched. No Git remote mutation, Microsoft authentication, Dataverse request, or tenant mutation occurred as a result of these failures.

System-resource observations

The evidence does not indicate general memory or system process exhaustion:

Approximately 88% system memory was free.
No swap activity was observed.
Approximately 673 total processes were active.
The per-user process limit was approximately 2,666.

The resource accumulation was concentrated under the main ChatGPT process.

Suspected component

The evidence strongly suggests a resource-cleanup issue in the ChatGPT/Codex desktop application or its Electron helper/process-monitoring layer.

The repeating log entry is particularly relevant:

electron-sampler: spawn /bin/ps EAGAIN

A possible mechanism is that the Electron sampler repeatedly launches /bin/ps but does not consistently reap exited children or release associated resources.

The exact internal cause can only be confirmed by OpenAI. It may involve:

Child-process reaping.
Process-monitoring sampler cleanup.
File-descriptor cleanup.
A regression in build 26.730.61639.
Interaction between Codex subprocess execution and the Electron monitoring layer.
Troubleshooting already completed
Fully quit and reopened ChatGPT.
Restarted macOS.
Confirmed local process creation worked after restart.
Reopened the updated ChatGPT build.
Reproduced rapid zombie and descriptor accumulation in the fresh process.
Confirmed the issue was not caused by the Git repository.
Confirmed no Dataverse or Microsoft request was running.
Confirmed system memory was healthy.
Avoided resetting ChatGPT application data.
Avoided changing macOS process or descriptor limits.
Avoided destructive Git recovery actions.
Requested investigation

Please investigate:

Child-process reaping by the main ChatGPT process.
The Electron sampler that repeatedly spawns /bin/ps.
File-descriptor lifecycle and cleanup.
Codex helper-process cleanup after command completion or cancellation.
Whether build 26.730.61639, build 6234, contains a regression affecting macOS process management.
Whether the app can disable or rate-limit the sampler when repeated spawn failures occur.
Whether diagnostic logging can identify which descriptors and child processes are not being released.

What steps can reproduce the bug?

Fully quit ChatGPT using ChatGPT → Quit ChatGPT or ⌘Q.
Confirm the ChatGPT process has exited.
Reopen ChatGPT desktop build 26.730.61639.
Start or resume a Codex repository task.
Monitor child processes owned by the main ChatGPT process.
Monitor numeric file descriptors owned by the same process.
Observe zombie children and descriptors accumulating rapidly.
Continue until helper-process launches begin failing with EAGAIN.

The fresh-session measurements demonstrate that this is not stale state inherited from the previous ChatGPT process.

What is the expected behavior?

_No response_

Additional information

_No response_

View original on GitHub ↗

1 Comment

github-actions[bot] contributor · 22 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #37236
  • #37223
  • #37050
  • #37084

Powered by Codex Action