Community
Participate
Working Groups
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
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.
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
Only way out I could find is to kill Eclipse
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.
Anything avoiding me to kill my instance of Eclipse would be good.
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...
*** This bug has been marked as a duplicate of bug 19217 ***