Bug 258416 - Debugging a StackOverflow causes UI hang
Summary: Debugging a StackOverflow causes UI hang
Status: CLOSED DUPLICATE of bug 19217
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Debug (show other bugs)
Version: 3.5   Edit
Hardware: PC Windows XP
: P3 major with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: JDT-Debug-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-11 05:21 EST by Philipe Mulet CLA
Modified: 2012-07-11 09:36 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2008-12-11 05:21:28 EST
pre 3.5M4 - Build id: I20081211-0100
VM is Sun 1.6.0_12-ea

When debugging the following program, in presence of a StackOverflowError, the debugger becomes non responsive. 

Steps:
1. In following program, place a breakpoint on line 3
public class X {
	public static void main(String[] args) {
		new X().foo(1, 2, true); // BREAKPOINT on this line
	}
	void foo(int i, int j, boolean b) {
		if 
			(b) {
			foo(
					i,
					j,
					bar(
							i 
							< 
							j));
		} else {
			boolean b1 = 
					bar(
							b);
		}
	}
	boolean bar(boolean b) { return b; }
}

2. Run as Java app; once hitting the breakpoint, step into #foo(...) using F5
3. When reaching recursive call to #foo(...) press F6 (step over)
4. Stackoverflow is occurring (expected)
5. Observe debugger is hanging
Comment 1 Philipe Mulet CLA 2008-12-11 05:23:01 EST
Thread dump:

Full thread dump Java HotSpot(TM) Client VM (11.0-b17 mixed mode):

"Timer-3" daemon prio=6 tid=0x3493b400 nid=0x1354 in Object.wait() [0x37fef000..0x37fefc14]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03540070> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x03540070> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Worker-14" prio=6 tid=0x34915c00 nid=0xbc8 in Object.wait() [0x380df000..0x380dfc94]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-13" prio=6 tid=0x34442c00 nid=0xd54 in Object.wait() [0x3806f000..0x3806fd14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-12" prio=6 tid=0x347fe800 nid=0x14e4 in Object.wait() [0x3802f000..0x3802fd94]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"org.eclipse.jdt.debug: JDI Event Dispatcher" daemon prio=6 tid=0x330f0800 nid=0x10b4 in Object.wait() [0x37f3f000..0x37f3fa94]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08ab4480> (a java.util.LinkedList)
        at org.eclipse.jdi.internal.connect.PacketReceiveManager.waitForPacketAvailable(PacketReceiveManager.java:192)
        at org.eclipse.jdi.internal.connect.PacketReceiveManager.getCommand(PacketReceiveManager.java:103)
        - locked <0x08ab4480> (a java.util.LinkedList)
        at org.eclipse.jdi.internal.MirrorImpl.getCommandVM(MirrorImpl.java:277)
        at org.eclipse.jdi.internal.event.EventQueueImpl.remove(EventQueueImpl.java:63)
        at org.eclipse.jdt.internal.debug.core.EventDispatcher.run(EventDispatcher.java:226)
        at java.lang.Thread.run(Thread.java:619)

"Timer-1" daemon prio=6 tid=0x330f1400 nid=0xd40 in Object.wait() [0x37eff000..0x37effb14]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08c31b08> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x08c31b08> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Timer-0" daemon prio=6 tid=0x3445a400 nid=0x129c in Object.wait() [0x37ebf000..0x37ebfb94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08c31b88> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0x08c31b88> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Packet Send Manager" daemon prio=6 tid=0x34029c00 nid=0x3c0 in Object.wait() [0x37e7f000..0x37e7fc94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08ab4608> (a java.util.LinkedList)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.jdi.internal.connect.PacketSendManager.sendAvailablePackets(PacketSendManager.java:98)
        - locked <0x08ab4608> (a java.util.LinkedList)
        at org.eclipse.jdi.internal.connect.PacketSendManager.run(PacketSendManager.java:53)
        at java.lang.Thread.run(Thread.java:619)

"Packet Receive Manager" daemon prio=6 tid=0x342c3000 nid=0x14bc runnable [0x37e3f000..0x37e3fc14]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at java.net.SocketInputStream.read(SocketInputStream.java:182)
        at java.io.DataInputStream.readInt(DataInputStream.java:370)
        at org.eclipse.jdi.internal.connect.SocketConnection.readPacket(SocketConnection.java:60)
        - locked <0x035400a8> (a java.io.DataInputStream)
        at org.eclipse.jdi.internal.connect.PacketReceiveManager.readAvailablePacket(PacketReceiveManager.java:274)
        at org.eclipse.jdi.internal.connect.PacketReceiveManager.run(PacketReceiveManager.java:82)
        at java.lang.Thread.run(Thread.java:619)

"Process monitor" daemon prio=6 tid=0x330d2800 nid=0x2f0 runnable [0x379df000..0x379dfb14]
   java.lang.Thread.State: RUNNABLE
        at java.lang.ProcessImpl.waitFor(Native Method)
        at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorThread.run(RuntimeProcess.java:405)

"Input Stream Monitor" daemon prio=6 tid=0x34974400 nid=0xd20 in Object.wait() [0x3795f000..0x3795fb94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08ab4800> (a java.lang.Object)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext(InputStreamMonitor.java:136)
        - locked <0x08ab4800> (a java.lang.Object)
        at org.eclipse.debug.internal.core.InputStreamMonitor.write(InputStreamMonitor.java:109)
        at org.eclipse.debug.internal.core.InputStreamMonitor$1.run(InputStreamMonitor.java:84)
        at java.lang.Thread.run(Thread.java:619)

"Output Stream Monitor" daemon prio=2 tid=0x330d0400 nid=0x1340 runnable [0x378df000..0x378dfa14]
   java.lang.Thread.State: RUNNABLE
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:199)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        - locked <0x08ab68d8> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:90)
        at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
        at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
        at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
        at java.lang.Thread.run(Thread.java:619)

"Output Stream Monitor" daemon prio=2 tid=0x34892800 nid=0x1580 runnable [0x3596f000..0x3596fa94]
   java.lang.Thread.State: RUNNABLE
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:199)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        - locked <0x08ab89d0> (a java.io.BufferedInputStream)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        - locked <0x08ab89f0> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:90)
        at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
        at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
        at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
        at java.lang.Thread.run(Thread.java:619)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x340c9800 nid=0x1284 in Object.wait() [0x37c2f000..0x37c2fa14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08522f68> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
        - locked <0x08522f68> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Worker-10" prio=6 tid=0x346a3800 nid=0x17b8 in Object.wait() [0x3799f000..0x3799fb14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-8" prio=6 tid=0x34825000 nid=0x1498 in Object.wait() [0x3791f000..0x3791fc14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-6" prio=6 tid=0x3401b000 nid=0x111c in Object.wait() [0x353ff000..0x353ffd14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-3" prio=6 tid=0x362e5000 nid=0x1060 in Object.wait() [0x3740f000..0x3740fa94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x08ab8a48> (a org.eclipse.ui.console.IOConsoleInputStream)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.ui.console.IOConsoleInputStream.waitForData(IOConsoleInputStream.java:147)
        at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:92)
        - locked <0x08ab8a48> (a org.eclipse.ui.console.IOConsoleInputStream)
        at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:117)
        at org.eclipse.debug.internal.ui.views.console.ProcessConsole$InputReadJob.run(ProcessConsole.java:679)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-2" prio=6 tid=0x3628e800 nid=0x4dc in Object.wait() [0x373cf000..0x373cfb14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x05385da8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x34434c00 nid=0xb78 in Object.wait() [0x3729f000..0x3729fb94]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x071ad930> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
        - locked <0x071ad930> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x3464a400 nid=0x17d8 in Object.wait() [0x35a2f000..0x35a2fc14]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x062c9920> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
        - locked <0x062c9920> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Java indexing" daemon prio=4 tid=0x34673400 nid=0x1780 in Object.wait() [0x359bf000..0x359bfc94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x06116de8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:371)
        - locked <0x06116de8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Thread.run(Thread.java:619)

"Provisioning Event Dispatcher" daemon prio=6 tid=0x3401e800 nid=0x600 in Object.wait() [0x33cbf000..0x33cbfb14]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x057ccd30> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:385)
        - locked <0x057ccd30> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:325)

"Bundle File Closer" daemon prio=6 tid=0x3420ec00 nid=0x1698 in Object.wait() [0x33c7f000..0x33c7fb94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x054510a0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:385)
        - locked <0x054510a0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:325)

"Framework Event Dispatcher" daemon prio=6 tid=0x331d4000 nid=0x15f4 in Object.wait() [0x33c3f000..0x33c3fc14]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05341bc8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:385)
        - locked <0x05341bc8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:325)

"Start Level Event Dispatcher" daemon prio=6 tid=0x331df400 nid=0x11d0 in Object.wait() [0x33b4f000..0x33b4fc94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05331a30> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:385)
        - locked <0x05331a30> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:325)

"State Data Manager" daemon prio=6 tid=0x331d5400 nid=0x1124 waiting on condition [0x33b0f000..0x33b0fd14]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:306)
        at java.lang.Thread.run(Thread.java:619)

"OSGi Console" prio=6 tid=0x331c7400 nid=0x14cc runnable [0x33acf000..0x33acfd94]
   java.lang.Thread.State: RUNNABLE
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:281)
        at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:221)
        at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=6 tid=0x32e4ac00 nid=0x154 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x32e1d400 nid=0x169c waiting on condition [0x00000000..0x3303f740]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x32e64800 nid=0x14b8 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x32e10800 nid=0x1700 waiting on condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x32e0bc00 nid=0x15e0 in Object.wait() [0x32f5f000..0x32f5fc94]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05223a20> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0x05223a20> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x32e1f400 nid=0x700 in Object.wait() [0x32f1f000..0x32f1fd14]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x05223aa8> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x05223aa8> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x003b6c00 nid=0x3e8 runnable [0x009cf000..0x009cfe68]
   java.lang.Thread.State: RUNNABLE
        at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3033)
        at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:3369)
        at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:3366)
        at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:3366)
        at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:3366)
        at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:3413)
        at org.eclipse.jface.viewers.TreeViewer.getSelection(TreeViewer.java:250)
        at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:338)
        at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2470)
        at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2863)
        at org.eclipse.jface.viewers.TreeViewer.replace(TreeViewer.java:526)
        at org.eclipse.debug.internal.ui.viewers.model.ChildrenUpdate.performUpdate(ChildrenUpdate.java:76)
        at org.eclipse.debug.internal.ui.viewers.model.ViewerUpdateMonitor$1.runInUIThread(ViewerUpdateMonitor.java:80)
        at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
        - locked <0x035402a0> (a org.eclipse.swt.widgets.RunnableLock)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3852)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:333)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:366)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:550)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:505)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1237)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1213)

"VM Thread" prio=10 tid=0x32e25800 nid=0x1724 runnable

"VM Periodic Task Thread" prio=10 tid=0x32e4c400 nid=0x10a0 waiting on condition

JNI global references: 1003

Heap
 def new generation   total 11008K, used 981K [0x02a80000, 0x03670000, 0x051e0000)
  eden space 9792K,   4% used [0x02a80000, 0x02af6450, 0x03410000)
  from space 1216K,  41% used [0x03540000, 0x035befc0, 0x03670000)
  to   space 1216K,   0% used [0x03410000, 0x03410000, 0x03540000)
 tenured generation   total 145672K, used 69182K [0x051e0000, 0x0e022000, 0x22a80000)
   the space 145672K,  47% used [0x051e0000, 0x0956f940, 0x0956fa00, 0x0e022000)
 compacting perm gen  total 52736K, used 52534K [0x22a80000, 0x25e00000, 0x32a80000)
   the space 52736K,  99% used [0x22a80000, 0x25dcdb00, 0x25dcdc00, 0x25e00000)
No shared spaces configured.
Comment 2 Philipe Mulet CLA 2008-12-11 05:24:55 EST
Steps can be simplified into:

1. In following program, place a breakpoint on line 3
public class X {
        public static void main(String[] args) {
                new X().foo(1, 2, true); // BREAKPOINT on this line
        }
        void foo(int i, int j, boolean b) {
                if 
                        (b) {
                        foo(
                                        i,
                                        j,
                                        bar(
                                                        i 
                                                        < 
                                                        j));
                } else {
                        boolean b1 = 
                                        bar(
                                                        b);
                }
        }
        boolean bar(boolean b) { return b; }
}

2. Run as Java app; once hitting the breakpoint, step over (F6)
3. Stackoverflow is occurring (expected)
4. Observe debugger is hanging
Comment 3 Philipe Mulet CLA 2008-12-11 05:26:16 EST
Only way out I could find is to kill Eclipse
Comment 4 Darin Wright CLA 2008-12-11 09:18:30 EST
Debugging stack overflows has been problematic since day 1 - see bug 19217. However, perhaps we could recognize the exception and avoid retrieving so many stack frames.
Comment 5 Philipe Mulet CLA 2008-12-12 05:14:20 EST
Anything avoiding me to kill my instance of Eclipse would be good.
Comment 6 Philipe Mulet CLA 2008-12-12 05:16:21 EST
Feels to me this should be investigated. A solution where you do not expand more than a certain amount of stack frames would make sense...
Comment 7 Michael Rennie CLA 2012-07-11 09:36:02 EDT

*** This bug has been marked as a duplicate of bug 19217 ***