[app][macOS] ChatGPT/Codex crashes (V8 OOM) and hangs in reading_mode::parse_distilled_html (web reader / DOM distiller)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From "About Codex" dialog)?
26.814.41407 (6720) — also reproduced on 26.810.52044 (6662)
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.5.0 arm64 arm
macOS 26.5.1 (Build 25F80), Apple silicon (arm64), Mac16,10, 16 GB RAM
What issue are you seeing?
The desktop app repeatedly crashes and hangs while using the web-reading / "browse a page" feature.
Crash (7 reports over ~2 days). All are EXC_CRASH / SIGABRT with asi = "libsystem_c.dylib: abort() called". The abort is raised by Node/V8's out-of-memory handler. Triggered-thread stack (innermost first):
__pthread_kill
pthread_kill
abort
node::OOMErrorHandler(char const*, v8::OOMDetails const&)
reading_mode$cxxbridge1$194$parse_distilled_html + ...
reading_mode$cxxbridge1$194$parse_distilled_html + ...
v8::CppHeap::CollectGarbageInYoungGenerationForTesting(...)
...
v8::internal::StrongRootAllocatorBase::allocate_impl(...)
... (JIT frames) ...
v8::Function::Call
node::InternalMakeCallback
node::AsyncWrap::MakeCallback
node::worker::MessagePort::OnMessage
node::worker::Worker::Run
So a Node worker thread calls into the Rust reading_mode::parse_distilled_html, which allocates cppgc (Oilpan) objects; a cppgc collection runs, an allocation fails, and V8 aborts the process.
Hang (3 reports). The process becomes unresponsive for ~40-50 seconds. The busy thread is stuck 15/15 samples in:
reading_mode$cxxbridge1$194$parse_distilled_html +11369892
cppgc::internal::BaseObjectSizeTrait::GetObjectSizeForGarbageCollected
At hang time the footprint is only ~827 MB, so this is not a whole-machine OOM — it is cppgc heap exhaustion / a pathological GC pass. The process also reports "Dispatch Thread Soft Limit Reached: 64" and "Workqueue exceeded constrained thread limit (64)" with 147 threads.
What steps can reproduce the bug?
- Open the ChatGPT/Codex desktop app on macOS.
- Ask it to read / summarize a web page (or use Browse on a large or complex page).
- The app either freezes for ~40-50s (beachball) or exits with a SIGABRT crash report.
What is the expected behavior?
Reading a web page should complete (or fail gracefully) without freezing the UI or crashing the app.
Additional information
- The
reading_modesymbols correspond to Chromium's DOM Distiller / Reader Mode:reading_mode.mojom.DistillationEvaluator,chrome-distiller,use_distiller,enable-dom-distiller,reader-mode-readability-distiller-enabled. - Root cause appears to be the Rust
reading_mode::parse_distilled_html+ cppgc (Blink Oilpan) integration building an unbounded object graph for certain pages, causing either cppgc OOM (crash) or a stuck GC pass (hang). - Local crash logs: ~/Library/Logs/DiagnosticReports/ChatGPT-.ips and /Library/Logs/DiagnosticReports/ChatGPT__longde.hang.
- Possibly related: issue #33582 (memory growth / system freeze) and the community thread "ChatGPT Desktop 26.810.50856 crashes after 1-3 minutes — computer-use / sky.node thread exhaustion".
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the local ChatGPT crash reports in ~/Library/Logs/DiagnosticReports/ChatGPT-.ips and hang logs in /Library/Logs/DiagnosticReports/ChatGPT__longde.hang. Trace the reading_mode::parse_distilled_html entry point and its cppgc/V8 context, then compare issue #33582. Done means large or complex pages complete or fail gracefully without a UI hang or SIGABRT.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, node.js, rust
- Domain
- desktop, performance
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100