CodexDockTilePlugin infinite recursion crash in setDockTile:
Resolved 💬 4 comments Opened Jun 15, 2026 by jasony009 Closed Aug 6, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Bug Report: CodexDockTilePlugin infinite recursion crash
Summary
CodexDockTilePlugin crashes immediately on load due to infinite recursion in setDockTile:, taking down the macOS Dock's com.apple.dock.external.extra.arm64 XPC process.
Environment
- Codex Version: 26.609.41114 (Build 3888)
- macOS: 26.5.1 (25F80)
- Hardware: MacBookPro18,2 (M1 Max, 64GB RAM)
- SIP: Enabled
Crash Details
- Process:
com.apple.dock.external.extra.arm64 - Plugin:
CodexDockTilePlugin.plugin(com.openai.codex.dock-tile-plugin) - Crash Type: Stack overflow (recursion level 37,331)
- Time to Crash: ~206ms after launch
Stack Trace
0 libobjc.A.dylib objc_storeStrong + 4
1 CodexDockTilePlugin -[CodexDockTilePlugin_com_openai_codex setDockTile:] + 40
2 CodexDockTilePlugin -[CodexDockTilePlugin_com_openai_codex setDockTile:] + 224
-------- RECURSION LEVEL 37331 --------
Root Cause Analysis (from disassembly)
In -[CodexDockTilePlugin_com_openai_codex setDockTile:], at offset 0x0bc4, the method calls itself directly:
0x0bc0: ldur x0, [x29, #-0x8] ; x0 = self
0x0bc4: bl objc_msgSend$setDockTile: ; [self setDockTile:self.dockTile] ← BUG
The pseudo-code logic:
- (void)setDockTile:(NSDockTile *)dockTile {
self.dockTile = dockTile;
if (self.preferenceObserver) {
[[NSNotificationCenter defaultCenter] removeObserver:self.preferenceObserver];
self.preferenceObserver = nil;
}
// ⚠️ BUG: calls itself, causing infinite recursion
[self setDockTile:self.dockTile];
// The following never executes:
// - Register new notification observer
// - Call updateDockTile
}
Trigger Conditions
- macOS wake from sleep
- External display connect/disconnect
- Any Dock restart
Workaround
Renaming CodexDockTilePlugin.plugin to disable it stops the crash.
Crash Report
Incident Identifier: B2956515-0C0C-4249-95C2-F5BBCC1FDCD3
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can reproduce this on the current notarized/signed Codex Desktop build as well, and the impact is severe enough to make the Mac nearly unusable.
Environment:
26.616.51431, build421226.5.1 (25F80)MacBookPro18,3, Apple Silicon, 32 GB RAM/Applications/Codex.appis official/notarized:spctl --assess --type execute -vv /Applications/Codex.appreturnsaccepted, originDeveloper ID Application: OpenAI OpCo, LLC (2DC432GLL2)Info.pliststill containsNSDockTilePlugIn=CodexDockTilePlugin.pluginFresh crash from
~/Library/Logs/DiagnosticReports/com.apple.dock.external.extra.arm64-2026-06-22-150118.ips:Observed system impact while this is happening:
WindowServeraround 70-90% CPUI also tried the known local workaround of removing/disabling the Dock tile plugin entry. It stops this specific Dock crash, but it modifies the app bundle/signature and can lead to macOS Gatekeeper showing “Codex is damaged and can’t be opened” after restart or reinstall/quarantine changes. So this does not feel like a safe workaround for normal users.
After reinstalling/overwriting with the official Codex.app, the app opens again and passes Gatekeeper, but the
NSDockTilePlugInentry is restored and the Dock external extra crash returns immediately. A temporary official build/setting that disables this Dock tile plugin, or a signed hotfix removing/fixingsetDockTile:, would be very helpful.Additional severe datapoint: the same machine just hit a full
WindowServeruserspace watchdog timeout while Codex was running and the Dock tile plugin issue was present.WindowServer report:
/Library/Logs/DiagnosticReports/WindowServer_2026-06-22-164514_MacBook-Pro-8.userspace_watchdog_timeout.spin2026-06-22 16:44:57 +0800to16:45:03 +080026.5.1 (25F80)MacBookPro18,3, 32 GB RAMWindowServer details from the spin report:
The main thread stack is stuck deeply inside SkyLight repeating the same frame pattern:
User-visible impact at the time:
Immediately after recovery, the system was still under extreme load:
There is also a nearby Codex diagnostic report:
I am not claiming the WindowServer stack alone proves causality, but this is the observed escalation on the same system: Codex Dock tile plugin recursive crashes + syspolicyd/trustd load + WindowServer high CPU eventually progressed to a full WindowServer watchdog timeout and several minutes of desktop unusability. This is now beyond “high CPU”; it can make the macOS UI non-interactive.
One more fresh signal from immediately after the WindowServer watchdog recovery on the same official build (
26.616.51431/4212):At the same time:
So this also matches the
syspolicyd/ Gatekeeper FD exhaustion pattern reported in related issues.