Project: Eclipse_Platform_UI
Bug 44534 Major slowdown when single stepping
Reported: 2003-10-09 07:30:14 | Status: resolved wontfix

This morning, while debugging a Junit launch, I experienced a wait of over 2 min. when single stepping through my program. In this particular case the step was a call from one method to another. I am running on a dual 933Mhz processor system with 1GB of memory and 512MB has been given to Eclipse. I use Windows XP with service pack 1. I use Sun JVM 1.4.1_02. I was running on build I20030917. A full thread dump follows. JspUIPlugin: startup java.lang.OutOfMemoryError java.lang.OutOfMemoryError java.lang.OutOfMemoryError Unhandled exception caught in event loop. Reason: Failed to execute runnable (java.lang.OutOfMemoryError) *** Stack trace of contained exception *** Reason: java.lang.OutOfMemoryError java.lang.OutOfMemoryError Full thread dump Java HotSpot(TM) Client VM (1.4.1_02-b06 mixed mode): "Worker-59" prio=7 tid=0x0BC50838 nid=0xf40 in Object.wait() [d11f000..d11fd8c] at java.lang.Object.wait(Native Method) - waiting on <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:95) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob (WorkerPool.java:116) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BF3DC20 nid=0x9a8 in Object.wait() [d17f000..d17fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <065D2E20> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC6ED20 nid=0xa74 in Object.wait() [d0bf000..d0bfd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <06518888> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BE80500 nid=0x90c in Object.wait() [d05f000..d05fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0647BB58> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BEBFC10 nid=0x8fc in Object.wait() [cfff000..cfffd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <063EF248> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BBF9BE0 nid=0x398 in Object.wait() [cf9f000..cf9fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0639C310> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BE2ED38 nid=0x768 in Object.wait() [cf3f000..cf3fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <06350898> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC615B8 nid=0xc90 in Object.wait() [ce7f000..ce7fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0627ADE0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC3C3D8 nid=0xfd4 in Object.wait() [ce1f000..ce1fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0621A460> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC3AF60 nid=0xf1c in Object.wait() [cdbf000..cdbfd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <061A2B08> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC3A008 nid=0xd58 in Object.wait() [cd5f000..cd5fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0615BCB8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC03658 nid=0xef8 runnable [ccff000..ccffd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0613EDF0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BC01208 nid=0xf64 in Object.wait() [cc9f000..cc9fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <06082370> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BBFFFA0 nid=0xf28 in Object.wait() [cc3f000..cc3fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <05FFBFE8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0BBFE208 nid=0x940 in Object.wait() [cbdf000..cbdfd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <05F8B0D8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Thread timer" prio=7 tid=0x0BBF8CB8 nid=0x508 waiting on condition [cb3f000..cb3fd8c] at java.lang.Thread.sleep(Native Method) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$ThreadTimer.c heckTimers(LaunchViewEventHandler.java:424) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$ThreadTimer.a ccess$2(LaunchViewEventHandler.java:391) at org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler$1.run (LaunchViewEventHandler.java:383) at java.lang.Thread.run(Thread.java:536) "Worker-58" prio=7 tid=0x0BB97500 nid=0x644 in Object.wait() [caff000..caffd8c] at java.lang.Object.wait(Native Method) - waiting on <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:95) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob (WorkerPool.java:116) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "org.eclipse.jdt.debug: JDI Event Dispatcher" prio=7 tid=0x0BB89878 nid=0xe78 in Object.wait() [ca3f000..ca3fd8c] at java.lang.Object.wait(Native Method) - waiting on <05DDAE18> (a org.eclipse.jdi.internal.connect.PacketReceiveManager) at java.lang.Object.wait(Object.java:426) at org.eclipse.jdi.internal.connect.PacketReceiveManager.waitForPacketAvailable (PacketReceiveManager.java:168) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getCommand (PacketReceiveManager.java:93) - locked <05DDAE18> (a org.eclipse.jdi.internal.connect.PacketReceiveManager) at org.eclipse.jdi.internal.MirrorImpl.getCommandVM (MirrorImpl.java:276) at org.eclipse.jdi.internal.event.EventQueueImpl.remove (EventQueueImpl.java:63) at org.eclipse.jdi.internal.event.EventQueueImpl.remove (EventQueueImpl.java:48) at org.eclipse.jdt.internal.debug.core.EventDispatcher.run (EventDispatcher.java:206) at java.lang.Thread.run(Thread.java:536) "Packet Send Manager" prio=7 tid=0x0BB96AC8 nid=0xc1c in Object.wait() [cabf000..cabfd8c] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:426) at org.eclipse.jdi.internal.connect.PacketSendManager.sendAvailablePackets (PacketSendManager.java:94) - locked <05DDAD80> (a org.eclipse.jdi.internal.connect.PacketSendManager) at org.eclipse.jdi.internal.connect.PacketSendManager.run (PacketSendManager.java:54) at java.lang.Thread.run(Thread.java:536) "Packet Receive Manager" prio=7 tid=0x0BB96170 nid=0x938 runnable [ca7f000..ca7fd8c] 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:392) at org.eclipse.jdi.internal.jdwp.JdwpPacket.read(JdwpPacket.java:124) at org.eclipse.jdi.internal.connect.PacketReceiveManager.readAvailablePacket (PacketReceiveManager.java:224) at org.eclipse.jdi.internal.connect.PacketReceiveManager.run (PacketReceiveManager.java:70) at java.lang.Thread.run(Thread.java:536) "Console Polling Thread" prio=7 tid=0x0BB8A928 nid=0x340 waiting on condition [c9ff000..c9ffd8c] at java.lang.Thread.sleep(Native Method) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner.pollAndS leep(ConsoleDocumentPartitioner.java:528) at org.eclipse.debug.internal.ui.views.console.ConsoleDocumentPartitioner$1.run (ConsoleDocumentPartitioner.java:512) at java.lang.Thread.run(Thread.java:536) "ServerConnection" prio=7 tid=0x0BB8A7D0 nid=0x890 runnable [c9bf000..c9bfd8c] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:406) at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:446) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180) - locked <05DFC6A8> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(InputStreamReader.java:167) at java.io.BufferedReader.fill(BufferedReader.java:136) at java.io.BufferedReader.readLine(BufferedReader.java:299) - locked <05DFC6A8> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(BufferedReader.java:362) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.readMessage (RemoteTestRunnerClient.java:177) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient.access$8 (RemoteTestRunnerClient.java:176) at org.eclipse.jdt.internal.junit.ui.RemoteTestRunnerClient$ServerConnection.run (RemoteTestRunnerClient.java:106) "Input Stream Monitor" prio=7 tid=0x0BB8A278 nid=0xcc8 in Object.wait() [c97f000..c97fd8c] at java.lang.Object.wait(Native Method) - waiting on <05DDAFD8> (a java.lang.Object) at java.lang.Object.wait(Object.java:426) at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext (InputStreamMonitor.java:124) - locked <05DDAFD8> (a java.lang.Object) at org.eclipse.debug.internal.core.InputStreamMonitor.write (InputStreamMonitor.java:99) at org.eclipse.debug.internal.core.InputStreamMonitor$1.run (InputStreamMonitor.java:75) at java.lang.Thread.run(Thread.java:536) "Output Stream Monitor" prio=7 tid=0x0BB93888 nid=0xce4 runnable [c93f000..c93fd8c] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:174) at org.eclipse.debug.internal.core.OutputStreamMonitor.read (OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1 (OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run (OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:536) "Output Stream Monitor" prio=7 tid=0x0BB93478 nid=0xfd8 runnable [c8ff000..c8ffd8c] at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:191) at java.io.BufferedInputStream.read1(BufferedInputStream.java:220) at java.io.BufferedInputStream.read(BufferedInputStream.java:277) - locked <05DDF128> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:90) at org.eclipse.debug.internal.core.OutputStreamMonitor.read (OutputStreamMonitor.java:132) at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1 (OutputStreamMonitor.java:124) at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run (OutputStreamMonitor.java:177) at java.lang.Thread.run(Thread.java:536) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0AD09C60 nid=0xca8 runnable [c86f000..c86fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <05CA63A0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Worker-57" prio=7 tid=0x0BBBA088 nid=0xcf8 in Object.wait() [c80f000..c80fd8c] at java.lang.Object.wait(Native Method) - waiting on <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:95) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob (WorkerPool.java:116) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "Worker-56" prio=7 tid=0x0BB8B1F8 nid=0xb94 in Object.wait() [c73f000..c73fd8c] at java.lang.Object.wait(Native Method) - waiting on <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:95) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob (WorkerPool.java:116) - locked <02F930C0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0AE0AC78 nid=0x414 runnable [c6cf000..c6cfd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <05AF6F80> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Worker-51" prio=7 tid=0x0BB8B350 nid=0xec8 runnable [c44f000..c44fd8c] at java.lang.Win32Process.waitFor(Native Method) at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorJob.run (RuntimeProcess.java:347) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:61) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0AD72388 nid=0x9e4 runnable [c77f000..c77fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <04B5BD68> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0AD9B210 nid=0xb54 runnable [c40f000..c40fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <04B0F118> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0B008DB0 nid=0x92c runnable [c64f000..c64fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <0453E748> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0B0CCE28 nid=0xf00 runnable [b68f000..b68fd8c] at java.lang.Object.wait(Native Method) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run (AbstractReconciler.java:161) - locked <03863DF0> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Java indexing" daemon prio=4 tid=0x0AF17388 nid=0xf20 in Object.wait() [b64f000..b64fd8c] at java.lang.Object.wait(Native Method) - waiting on <03703E98> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Object.wait(Object.java:426) at org.eclipse.jdt.internal.core.search.processing.JobManager.run (JobManager.java:358) - locked <03703E98> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:536) "Signal Dispatcher" daemon prio=10 tid=0x009A8C88 nid=0x8b8 waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x009A5220 nid=0xc98 in Object.wait() [ab1f000..ab1fd8c] at java.lang.Object.wait(Native Method) - waiting on <02F54BF0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <02F54BF0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x009EDDF8 nid=0x228 in Object.wait() [aadf000..aadfd8c] at java.lang.Object.wait(Native Method) - waiting on <02F54C58> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:426) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:113) - locked <02F54C58> (a java.lang.ref.Reference$Lock) "main" prio=7 tid=0x000354E8 nid=0x9c8 runnable [7f000..7fc40] at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method) at org.eclipse.swt.widgets.Display.sleep(Display.java:2484) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2038) at org.eclipse.ui.internal.Workbench.run(Workbench.java:2020) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:858) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) 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:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:295) at org.eclipse.core.launcher.Main.run(Main.java:751) at org.eclipse.core.launcher.Main.main(Main.java:587) "VM Thread" prio=5 tid=0x009ECB48 nid=0x810 runnable "VM Periodic Task Thread" prio=10 tid=0x009A7640 nid=0xd08 waiting on condition "Suspend Checker Thread" prio=10 tid=0x009A8238 nid=0x808 runnable

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/OutOfOrderVerifyListener.java bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/keys/WorkbenchKeyboard.java