You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
UI freezes/deadlocks while debugging apps with many short-lived threads: Debug tree refresh (TreeModelContentProvider.updateNodes) collides with hover #4403
Environment: Eclipse 2026-09 (4.41.0.20260903-0719), Windows Server 2025,
JDK 27; debuggee is Spring Boot 4.1 with virtual threads (enabled by
default), sustained thread churn (scheduled tasks suffice — no external
traffic required).
Symptom: repeated UI freezes (2-30s+, cyclic, CPU only 1-3% during freeze).
Captured deadlock pair in .metadata/.log (2026-09-17/18):
main: TreeModelContentProvider.updateNodes (recursive x3)
-> TreeViewer.replace/setChildCount -> OS.SendMessage (SWT tree surgery)
'Text Viewer Hover Presenter': Display.syncExec() cancelled waiting for the
UI lock
Still reproducible on 4.41 as of 2026-09-24 (monitoring sample attached).
Triggered by thread start/death events while a debug session is active,
even when the user is not interacting.
Workarounds (verified): uncheck Show Running Threads / Thread Groups /
Virtual Threads / Monitors in the Debug view menu, or close the Debug view,
or run without the debugger.
Note: this issue is against the Debug view implementation
(org.eclipse.debug.ui, TreeModelContentProvider); the jdt.debug tickets
above are referenced as the same-family history in the debugger area.
Attached: raw monitoring samples (deadlock pair 2026-09-17, recurrence
2026-09-24).
Hello @lyh061619 , can you please give more details provide samples and/or stack-traces showing the freezes? Is the issue in platform or in Spring? Also, I don't see the relation to #296, maybe your agent meant another repo?
Hello @lyh061619 , can you please give more details provide samples and/or stack-traces showing the freezes? Is the issue in platform or in Spring? Also, I don't see the relation to #296, maybe your agent meant another repo?
Thanks for the triage — answers below; fresh monitoring samples are being
re-captured and will be attached within a day (the freeze reproduces
several times per debugging hour, so capturing is just a matter of letting
a debug session run).
Samples: coming — two fresh captures on their way (the deadlock pair
main-in-TreeModelContentProvider / hover-cancelled-at-syncExec, plus a
standalone recurrence). The 2026-09-18 pair and the 2026-09-24
recurrence from my original report have the same shape; quoting their
key frames here for reference:
main:
TreeModelContentProvider.handleAdd -> updateNodes (x3)
-> TreeViewer.setChildCount -> OS.SendMessage (SWT tree surgery)
'Text Viewer Hover Presenter':
Display.syncExec() cancelled waiting for the UI lock
(SelectedResourceManager.getFromUI <- JavaDebugHover)
Platform or Spring? Platform. The frames are
org.eclipse.debug.ui.viewers (TreeModelContentProvider),
org.eclipse.jface.viewers (TreeViewer) and SWT (OS.SendMessage) — no
Spring/STS frames. The debuggee is Spring Boot 4.1 with virtual
threads on by default, which supplies the thread start/death churn;
any app with many short-lived threads should reproduce. I can attach a
~20-line reproducer (scheduled thread spawner) if useful.
Environment: 4.41.0.20260903-0719, Windows Server 2025, JDK 27 (IDE and
debuggee), ~20 Maven projects.
Workaround in daily use (verified): uncheck Show Running Threads / Thread
Groups / Virtual Threads / Monitors in the Debug view menu, or close the
Debug view while the app runs.
Activity
fedejeanne commentedon Oct 1, 2026
Hello @lyh061619 , can you please give more details provide samples and/or stack-traces showing the freezes? Is the issue in platform or in Spring? Also, I don't see the relation to #296, maybe your agent meant another repo?
lyh061619 commentedon Oct 2, 2026
Thanks for the triage — answers below; fresh monitoring samples are being
re-captured and will be attached within a day (the freeze reproduces
several times per debugging hour, so capturing is just a matter of letting
a debug session run).
Samples: coming — two fresh captures on their way (the deadlock pair
main-in-TreeModelContentProvider / hover-cancelled-at-syncExec, plus a
standalone recurrence). The 2026-09-18 pair and the 2026-09-24
recurrence from my original report have the same shape; quoting their
key frames here for reference:
main:
TreeModelContentProvider.handleAdd -> updateNodes (x3)
-> TreeViewer.setChildCount -> OS.SendMessage (SWT tree surgery)
'Text Viewer Hover Presenter':
Display.syncExec() cancelled waiting for the UI lock
(SelectedResourceManager.getFromUI <- JavaDebugHover)
Platform or Spring? Platform. The frames are
org.eclipse.debug.ui.viewers (TreeModelContentProvider),
org.eclipse.jface.viewers (TreeViewer) and SWT (OS.SendMessage) — no
Spring/STS frames. The debuggee is Spring Boot 4.1 with virtual
threads on by default, which supplies the thread start/death churn;
any app with many short-lived threads should reproduce. I can attach a
~20-line reproducer (scheduled thread spawner) if useful.
Split packages reported in platform ui #296: yes — Virtual threads presentation in Debug View eclipse-jdt/eclipse.jdt.debug#296, same feature area
(Debug view × virtual threads): that one is about virtual-thread
presentation, this one is thread events flooding the Debug tree
refresh on the UI thread. Related, not duplicate.
Environment: 4.41.0.20260903-0719, Windows Server 2025, JDK 27 (IDE and
debuggee), ~20 Maven projects.
Workaround in daily use (verified): uncheck Show Running Threads / Thread
Groups / Virtual Threads / Monitors in the Debug view menu, or close the
Debug view while the app runs.