Skip to content

EDT deadlock in MacDockDelegate.updateRecentProjectsMenu → CMenu.delItem → AWTThreading on macOS #616

Description

@mdproctor

Summary

IntelliJ IDEA 2026.1 (IU-261.24374.151) freezes repeatedly on macOS due to an EDT deadlock in MacDockDelegate.updateRecentProjectsMenu. The EDT blocks for 33-34 seconds each time, requiring a force quit.

14 freeze dumps in 10 days, all with identical stack trace.

Environment

  • macOS (Apple Silicon)
  • IntelliJ IDEA 2026.1 Ultimate (IU-261.24374.151)
  • JBR 21
  • Multiple projects open (lifecycle-managed via MCP plugin — projects open/close frequently)

Stack trace (from freeze report)

MacDockDelegate$updateRecentProjectsMenu$2.invokeSuspend 33600ms
  java.awt.Menu.removeAll 33600ms
    java.awt.Menu.remove 33600ms
      sun.lwawt.macosx.CMenu.delItem 33600ms
        sun.awt.AWTThreading.executeWaitToolkit 33600ms
          sun.awt.AWTThreading.execute 33600ms
            java.util.concurrent.LinkedBlockingQueue.take 33600ms
              java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 33600ms
                java.util.concurrent.ForkJoinPool.managedBlock 33600ms
                  java.util.concurrent.locks.LockSupport.park 33600ms

The EDT dispatches the coroutine MacDockDelegate.updateRecentProjectsMenu, which calls Menu.removeAll()CMenu.delItem(). This crosses into native AppKit via AWTThreading.executeWaitToolkit, which blocks waiting for the toolkit thread — but the toolkit thread never responds, causing a 33+ second deadlock.

Reproduction

Occurs repeatedly without user interaction — likely triggered by project open/close events that update the recent projects list. With lifecycle management cycling projects through active → dormant → closed states, the recent projects menu gets updated frequently.

Freeze dump directory listing

All 14 freeze reports have identical root cause:

threadDumps-freeze-20260628-042003
threadDumps-freeze-20260629-171225
threadDumps-freeze-20260630-093516
threadDumps-freeze-20260630-114146
threadDumps-freeze-20260705-141403
threadDumps-freeze-20260705-235344
threadDumps-freeze-20260706-042610
threadDumps-freeze-20260706-111733
threadDumps-freeze-20260706-164717
threadDumps-freeze-20260706-175710
threadDumps-freeze-20260707-190348
threadDumps-freeze-20260707-210538
threadDumps-freeze-20260708-004818

Notes

  • -Dsun.java2d.metal=false is unlikely to help — this is an AWT/AppKit thread bridge deadlock, not a rendering issue
  • The freeze occurs during native menu manipulation (CMenu.delItem), not during rendering
  • Reducing the number of recent projects or the frequency of project open/close events may reduce occurrence

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions