Project: SWT
Bug 62336 UI hangs while attempting to add missing methods.
Reported: 2004-05-14 15:30:47 | Status: resolved fixed

I have a workspace with a single plugin project ("ca.mikew.LowMemoryDetector") in it. If I perform the following steps on my Mac... - switch to java perspective - expand ca.mikew.LowMemoryDetector project - expand src folder - expand ca.mikew.LowMemoryDetector package - double click LowMemoryDetectorPlugin - add "implements org.eclipse.ui.IStartup" to class definition in editor - click on "quick fix" icon on the line containing the class definition - double click "Add unimplemented methods" ... eclipse frequently (occurred 5 out of 7 attempts) becomes unresponsive and must be "kill"ed. Here is a stack trace from one such case: Full thread dump Java HotSpot(TM) Client VM (1.4.2-34 mixed mode): "org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0x0059e100 nid=0x1f86600 in Object.wait() [f0911000..f0911b20] at java.lang.Object.wait(Native Method) - waiting on <0x63810d78> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:161) - locked <0x63810d78> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue) "Java indexing" daemon prio=4 tid=0x00560880 nid=0x1c93600 in Object.wait() [f0407000..f0407b20] at java.lang.Object.wait(Native Method) - waiting on <0x62f001a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Object.wait(Object.java:429) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:344) - locked <0x62f001a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:552) "Worker-3" prio=5 tid=0x00553190 nid=0x1bda600 in Object.wait() [f080f000..f080fb20] at java.lang.Object.wait(Native Method) - waiting on <0x62cbb6e8> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:209) - locked <0x62cbb6e8> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:236) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:59) "Worker-1" prio=5 tid=0x005528f0 nid=0x1bcca00 in Object.wait() [f070d000..f070db20] at java.lang.Object.wait(Native Method) - waiting on <0x62cbb6e8> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:209) - locked <0x62cbb6e8> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:236) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:59) "Thread-1" prio=6 tid=0x00540830 nid=0x1a1ee00 in Object.wait() [f068c000..f068cb20] at java.lang.Object.wait(Native Method) - waiting on <0x62d8a800> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x62d8a800> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThread.run(ActionContri butionItem.java:196) "Thread-0" prio=6 tid=0x005405e0 nid=0x19a1400 in Object.wait() [f060b000..f060bb20] at java.lang.Object.wait(Native Method) - waiting on <0x62d8a870> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x62d8a870> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.eclipse.jface.action.ActionContributionItem$ImageCache$ReferenceCleanerThread.run(ActionContri butionItem.java:196) "Start Level Event Dispatcher" daemon prio=5 tid=0x00514320 nid=0x1899200 in Object.wait() [f0509000..f0509b20] at java.lang.Object.wait(Native Method) - waiting on <0x62b0b2d8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at java.lang.Object.wait(Object.java:429) at org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:149) - locked <0x62b0b2d8> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:107) "Framework Event Dispatcher" daemon prio=5 tid=0x00513b50 nid=0x1858a00 in Object.wait() [f0488000..f0488b20] at java.lang.Object.wait(Native Method) - waiting on <0x62b0b328> (a org.eclipse.osgi.framework.eventmgr.EventThread) at java.lang.Object.wait(Object.java:429) at org.eclipse.osgi.framework.eventmgr.EventThread.getNextEvent(EventThread.java:149) - locked <0x62b0b328> (a org.eclipse.osgi.framework.eventmgr.EventThread) at org.eclipse.osgi.framework.eventmgr.EventThread.run(EventThread.java:107) "Signal Dispatcher" daemon prio=10 tid=0x00507f70 nid=0x1814c00 waiting on condition [0..0] "Finalizer" daemon prio=8 tid=0x00506a80 nid=0x180e000 in Object.wait() [f0203000..f0203b20] at java.lang.Object.wait(Native Method) - waiting on <0x62abdd90> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x62abdd90> (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=0x00506750 nid=0x1802600 in Object.wait() [f0182000..f0182b20] at java.lang.Object.wait(Native Method) - waiting on <0x62abdb90> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:429) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115) - locked <0x62abdb90> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x00500d60 nid=0xa000a1ec runnable [bfffe000..bffff528] at org.eclipse.swt.internal.carbon.OS.ReceiveNextEvent(Native Method) at org.eclipse.swt.widgets.Display.sleep(Display.java:3254) at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:344) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1354) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1324) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:243) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:90) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:298) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:249) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:126) 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:269) at org.eclipse.core.launcher.Main.run(Main.java:722) at org.eclipse.core.launcher.Main.main(Main.java:706) "VM Thread" prio=5 tid=0x00505fd0 nid=0x1802e00 runnable "VM Periodic Task Thread" prio=10 tid=0x00507ee0 nid=0x1812600 waiting on condition "Exception Catcher Thread" prio=10 tid=0x00500d00 nid=0x1802a00 runnable

Files changed in fix:
bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Shell.java