Seen in: #596
Reproduction steps are similar to: #2637
- Set a breakpoint at:
org.eclipse.debug.ui.console.ConsoleColorProvider.connect(IProcess, IConsole)
- Debug Eclipse, make sure the Console view is open.
- In the debuggee, create a snippet:
public class Test3 {
public static void main(String[] args) throws InterruptedException {
Thread.sleep(60_000);
}
}
- Launch this snippet twice.
- Observe two threads suspended at the breakpoint.
- Step over in the 1st thread until
if (streamsProxy != null) {, do the same for the 2nd thread.
- Continue stepping until this state is reached:
"Worker-7: Creating console for /usr/lib/jvm/java-21-openjdk/bin/java (Apr 30, 2026, 11:56:11 AM) [pid: 70092]" #79 [69171] prio=5 os_prio=0 cpu=72.35ms elapsed=122.76s tid=0x00007fea50003e50 nid=69171 runnable [0x00007feaecea0000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.connect(ProcessConsole.java:797)
- locked <0x0000000720e4cde8> (a org.eclipse.debug.internal.core.OutputStreamMonitor)
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.connect(ProcessConsole.java:760)
at org.eclipse.debug.ui.console.ConsoleColorProvider.connect(ConsoleColorProvider.java:43)
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.<init>(ProcessConsole.java:274)
at org.eclipse.debug.internal.ui.views.console.ProcessConsoleManager$ConsoleCreation.run(ProcessConsoleManager.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
"Worker-10: Creating console for /usr/lib/jvm/java-21-openjdk/bin/java (Apr 30, 2026, 11:56:09 AM) [pid: 70044]" #82 [69174] prio=5 os_prio=0 cpu=41.39ms elapsed=122.75s tid=0x00007fea4c004610 nid=69174 runnable [0x00007feaeca9e000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.connect(ProcessConsole.java:797)
- locked <0x000000072376c7a8> (a org.eclipse.debug.internal.core.OutputStreamMonitor)
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.connect(ProcessConsole.java:760)
at org.eclipse.debug.ui.console.ConsoleColorProvider.connect(ConsoleColorProvider.java:43)
at org.eclipse.debug.internal.ui.views.console.ProcessConsole.<init>(ProcessConsole.java:274)
at org.eclipse.debug.internal.ui.views.console.ProcessConsoleManager$ConsoleCreation.run(ProcessConsoleManager.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Both threads are not at fStreamListeners.add(listener), on the same ArrayList fStreamListeners.
Seen in: #596
Reproduction steps are similar to: #2637
org.eclipse.debug.ui.console.ConsoleColorProvider.connect(IProcess, IConsole)if (streamsProxy != null) {, do the same for the 2nd thread.Both threads are not at
fStreamListeners.add(listener), on the sameArrayListfStreamListeners.