Bug: CodexDockTilePlugin infinite recursion crash in setDockTile:

Open 💬 1 comment Opened Jun 15, 2026 by jasony009

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 (triggers Dock reload)
  • Any Dock restart

Workaround

Renaming CodexDockTilePlugin.plugin to disable it stops the crash.

Crash Report

Incident Identifier: B2956515-0C0C-4249-95C2-F5BBCC1FDCD3

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗