Deadlock
The following deadlock occurred when opening an editor project. I might have been builder another project at the same time.
Using Spoofax 0.4.6.
Submitted by Nathan Bruning on 17 May 2010 at 18:002010-05-17 17:55:38 Full thread dump OpenJDK 64-Bit Server VM (14.0-b16 mixed mode): "Attach Listener" daemon prio=10 tid=0x00000000057c1800 nid=0x7f5c waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Worker-23" prio=10 tid=0x00007f6be079f000 nid=0x7ef1 in Object.wait() [0x00007f6bdfffe000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c30fdb8c8> (a java.lang.Object) at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:187) - locked <0x00007f6c30fdb8c8> (a java.lang.Object) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:87) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:232) at org.eclipse.core.internal.utils.StringPoolJob.run(StringPoolJob.java:99) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-21" prio=10 tid=0x00007f6be0b13000 nid=0x7dad waiting for monitor entry [0x00007f6b7eff2000] java.lang.Thread.State: BLOCKED (on object monitor) at java.util.Collections$SynchronizedMap.put(Collections.java:1994) - waiting to lock <0x00007f6c674300a0> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.addKnownService(Descriptor.java:182) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.createService(Descriptor.java:155) - locked <0x00007f6c67431d80> (a org.strategoxt.imp.runtime.dynamicloading.StrategoObserverFactory) - locked <0x00007f6c67430040> (a org.strategoxt.imp.runtime.dynamicloading.Descriptor) at org.strategoxt.imp.runtime.parser.SGLRParseController.scheduleObserverUpdate(SGLRParseController.java:382) at org.strategoxt.imp.runtime.parser.SGLRParseController.onParseCompleted(SGLRParseController.java:369) at org.strategoxt.imp.runtime.parser.SGLRParseController.parse(SGLRParseController.java:267) at org.strategoxt.imp.runtime.parser.SGLRParseController.parse(SGLRParseController.java:1) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.parse(DynamicParseController.java:163) at org.eclipse.imp.editor.ParserScheduler.run(ParserScheduler.java:85) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-19" prio=10 tid=0x0000000004e1b000 nid=0x7d83 waiting for monitor entry [0x00007f6bb9ff6000] java.lang.Thread.State: BLOCKED (on object monitor) at java.util.Collections$SynchronizedMap.get(Collections.java:1990) - waiting to lock <0x00007f6c354a0c08> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.Environment.getDescriptor(Environment.java:291) at org.strategoxt.imp.runtime.dynamicloading.AbstractService.isInitialized(AbstractService.java:71) at org.strategoxt.imp.editors.stratego.StrategoSugarParseController.getWrapped(StrategoSugarParseController.java:67) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.getProject(DynamicParseController.java:104) at org.eclipse.imp.editor.UniversalEditor$6.resourceChanged(UniversalEditor.java:920) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:291) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1809) at org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:40) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-17" prio=10 tid=0x0000000003d6e000 nid=0x7d80 waiting for monitor entry [0x00007f6bea3ee000] java.lang.Thread.State: BLOCKED (on object monitor) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.createService(Descriptor.java:143) - waiting to lock <0x00007f6c67430040> (a org.strategoxt.imp.runtime.dynamicloading.Descriptor) at org.strategoxt.imp.runtime.dynamicloading.AbstractService.getWrapped(AbstractService.java:44) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.getWrapped(DynamicParseController.java:69) at org.strategoxt.imp.editors.stratego.StrategoSugarParseController.getWrapped(StrategoSugarParseController.java:81) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.reinitialize(DynamicParseController.java:152) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.reinitialize(Descriptor.java:119) - locked <0x00007f6c674300a0> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.Environment.registerUnmanagedParseTable(Environment.java:271) - locked <0x00007f6c354a0c08> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.updateResource(DynamicDescriptorLoader.java:185) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:144) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader$1.runInWorkspace(DynamicDescriptorLoader.java:127) - locked <0x00007f6c2302a618> (a java.lang.Class for org.strategoxt.imp.runtime.Environment) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Timer-10" daemon prio=10 tid=0x00007f6c1ae15800 nid=0x7cf4 in Object.wait() [0x00007f6ba47fc000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c44101e58> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:502) at java.util.TimerThread.mainLoop(Timer.java:505) - locked <0x00007f6c44101e58> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:484) "Timer-9" daemon prio=10 tid=0x00007f6c194bf000 nid=0x7cd7 in Object.wait() [0x00007f6bc8ffa000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c43647830> (a java.util.TaskQueue) at java.util.TimerThread.mainLoop(Timer.java:531) - locked <0x00007f6c43647830> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:484) "Worker-11" prio=10 tid=0x0000000004546000 nid=0x7cd1 in Object.wait() [0x00007f6bc17f8000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c71960f00> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:38) - locked <0x00007f6c71960f00> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:168) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:105) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:82) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:118) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1747) at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1005) at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:991) at org.eclipse.core.internal.resources.DelayedSnapshotJob.run(DelayedSnapshotJob.java:44) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Thread-34" daemon prio=10 tid=0x00007f6c186e3000 nid=0x7cac in Object.wait() [0x00007f6ba83fd000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c3ec225d0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) - locked <0x00007f6c3ec225d0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) at org.tmatesoft.svn.core.javahl.SVNClientImplTracker.run(SVNClientImplTracker.java:65) at java.lang.Thread.run(Thread.java:636) "[ThreadPool Manager] - Idle Thread" daemon prio=10 tid=0x00000000023e7800 nid=0x7c9b in Object.wait() [0x00007f6babffe000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c36c56df8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor) at java.lang.Object.wait(Object.java:502) at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106) - locked <0x00007f6c36c56df8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor) "Bundle File Closer" daemon prio=10 tid=0x00007f6c1a979000 nid=0x7c93 in Object.wait() [0x00007f6bccbfb000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c36c58638> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397) - locked <0x00007f6c36c58638> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333) "Java indexing" daemon prio=10 tid=0x00007f6c19466000 nid=0x7c92 in Object.wait() [0x00007f6bd07fc000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c370b9b30> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Object.wait(Object.java:502) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:381) - locked <0x00007f6c370b9b30> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:636) "Timer-0" daemon prio=10 tid=0x0000000001f13800 nid=0x7c91 in Object.wait() [0x00007f6bd43fd000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c3410bd48> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:502) at java.util.TimerThread.mainLoop(Timer.java:505) - locked <0x00007f6c3410bd48> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:484) "[Timer] - Main Queue Handler" daemon prio=10 tid=0x0000000002225000 nid=0x7c7a in Object.wait() [0x00007f6bee8b1000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c3152ef48> (a java.lang.Object) at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141) - locked <0x00007f6c3152ef48> (a java.lang.Object) at java.lang.Thread.run(Thread.java:636) "Framework Event Dispatcher" daemon prio=10 tid=0x0000000002188800 nid=0x7c78 in Object.wait() [0x00007f6bf60b3000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c311c5180> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397) - locked <0x00007f6c311c5180> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333) "Start Level Event Dispatcher" daemon prio=10 tid=0x00007f6c1824a800 nid=0x7c77 in Object.wait() [0x00007f6bf9cb4000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c311c52a8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397) - locked <0x00007f6c311c52a8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333) "State Data Manager" daemon prio=10 tid=0x0000000001ec9800 nid=0x7c76 waiting on condition [0x00007f6bfd8b5000] 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:636) "Low Memory Detector" daemon prio=10 tid=0x0000000001ce0800 nid=0x7c74 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x0000000001cdd800 nid=0x7c73 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x0000000001cdb800 nid=0x7c72 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "JDWP Event Helper Thread" daemon prio=10 tid=0x0000000001cc5800 nid=0x7c71 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "JDWP Transport Listener: dt_socket" daemon prio=10 tid=0x0000000001cc2000 nid=0x7c70 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x0000000001cb6800 nid=0x7c6f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x0000000001c96000 nid=0x7c6e in Object.wait() [0x00007f6c143fd000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c30ed2d78> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) - locked <0x00007f6c30ed2d78> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177) "Reference Handler" daemon prio=10 tid=0x0000000001c8f000 nid=0x7c6d in Object.wait() [0x00007f6c17ffe000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00007f6c30f2f4e0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:502) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133) - locked <0x00007f6c30f2f4e0> (a java.lang.ref.Reference$Lock) "main" prio=10 tid=0x0000000001c1a800 nid=0x7c63 waiting for monitor entry [0x00007f6c96ccc000] java.lang.Thread.State: BLOCKED (on object monitor) at java.util.Collections$SynchronizedMap.get(Collections.java:1990) - waiting to lock <0x00007f6c354a0c08> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.Environment.getDescriptor(Environment.java:291) at org.strategoxt.imp.runtime.EditorState.getDescriptor(EditorState.java:127) at org.strategoxt.imp.runtime.services.BuilderButtonDelegate$1.partActivated(BuilderButtonDelegate.java:45) at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:72) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.runtime.Platform.run(Platform.java:888) at org.eclipse.ui.internal.PartListenerList.fireEvent(PartListenerList.java:57) at org.eclipse.ui.internal.PartListenerList.firePartActivated(PartListenerList.java:70) at org.eclipse.ui.internal.PartService.firePartActivated(PartService.java:187) at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:306) at org.eclipse.ui.internal.WWinPartService.updateActivePart(WWinPartService.java:131) at org.eclipse.ui.internal.WWinPartService.access$0(WWinPartService.java:122) at org.eclipse.ui.internal.WWinPartService$WWinListener.partDeactivated(WWinPartService.java:50) at org.eclipse.ui.internal.PartListenerList2$4.run(PartListenerList2.java:115) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.runtime.Platform.run(Platform.java:888) at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:55) at org.eclipse.ui.internal.PartListenerList2.firePartDeactivated(PartListenerList2.java:113) at org.eclipse.ui.internal.PartService.firePartDeactivated(PartService.java:242) at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:300) at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:57) at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:136) at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3531) at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:614) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1092) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1062) at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3816) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3813) at org.eclipse.search2.internal.ui.SearchViewManager.activateSearchView(SearchViewManager.java:101) at org.eclipse.search2.internal.ui.InternalSearchUI.runSearchInBackground(InternalSearchUI.java:162) at org.eclipse.search.ui.NewSearchUI.runQueryInBackground(NewSearchUI.java:132) at org.eclipse.search.ui.NewSearchUI.runQueryInBackground(NewSearchUI.java:105) at org.eclipse.search.internal.ui.text.TextSearchPage.performAction(TextSearchPage.java:228) at org.eclipse.search.internal.ui.SearchDialog.performAction(SearchDialog.java:459) at org.eclipse.search.internal.ui.util.ExtendedDialogWindow.buttonPressed(ExtendedDialogWindow.java:164) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3493) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3112) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.search.internal.ui.OpenSearchDialogAction.run(OpenSearchDialogAction.java:54) at org.eclipse.search.internal.ui.OpenSearchDialogAction.run(OpenSearchDialogAction.java:45) at org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy.execute(ActionDelegateHandlerProxy.java:289) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:824) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:880) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:569) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:510) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:125) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1467) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1175) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1200) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1185) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1212) at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:706) at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:2837) at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:703) at org.eclipse.swt.widgets.Tree.gtk_key_press_event(Tree.java:1942) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1570) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4594) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4191) at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:7603) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1185) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1860) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3110) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) 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:194) 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:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) at org.eclipse.equinox.launcher.Main.main(Main.java:1287) "VM Thread" prio=10 tid=0x0000000001c8a000 nid=0x7c6c runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x0000000001c24800 nid=0x7c64 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x0000000001c26800 nid=0x7c65 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x0000000001c28000 nid=0x7c66 runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x0000000001c2a000 nid=0x7c67 runnable "GC task thread#4 (ParallelGC)" prio=10 tid=0x0000000001c2c000 nid=0x7c68 runnable "GC task thread#5 (ParallelGC)" prio=10 tid=0x0000000001c2d800 nid=0x7c69 runnable "GC task thread#6 (ParallelGC)" prio=10 tid=0x0000000001c2f800 nid=0x7c6a runnable "GC task thread#7 (ParallelGC)" prio=10 tid=0x0000000001c31800 nid=0x7c6b runnable "VM Periodic Task Thread" prio=10 tid=0x0000000001ce3000 nid=0x7c75 waiting on condition JNI global references: 20122 Found one Java-level deadlock: ============================= "Worker-21": waiting to lock monitor 0x00007f6be1415758 (object 0x00007f6c674300a0, a java.util.Collections$SynchronizedMap), which is held by "Worker-17" "Worker-17": waiting to lock monitor 0x0000000001f27ca8 (object 0x00007f6c67430040, a org.strategoxt.imp.runtime.dynamicloading.Descriptor), which is held by "Worker-21" Java stack information for the threads listed above: =================================================== "Worker-21": at java.util.Collections$SynchronizedMap.put(Collections.java:1994) - waiting to lock <0x00007f6c674300a0> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.addKnownService(Descriptor.java:182) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.createService(Descriptor.java:155) - locked <0x00007f6c67431d80> (a org.strategoxt.imp.runtime.dynamicloading.StrategoObserverFactory) - locked <0x00007f6c67430040> (a org.strategoxt.imp.runtime.dynamicloading.Descriptor) at org.strategoxt.imp.runtime.parser.SGLRParseController.scheduleObserverUpdate(SGLRParseController.java:382) at org.strategoxt.imp.runtime.parser.SGLRParseController.onParseCompleted(SGLRParseController.java:369) at org.strategoxt.imp.runtime.parser.SGLRParseController.parse(SGLRParseController.java:267) at org.strategoxt.imp.runtime.parser.SGLRParseController.parse(SGLRParseController.java:1) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.parse(DynamicParseController.java:163) at org.eclipse.imp.editor.ParserScheduler.run(ParserScheduler.java:85) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) "Worker-17": at org.strategoxt.imp.runtime.dynamicloading.Descriptor.createService(Descriptor.java:143) - waiting to lock <0x00007f6c67430040> (a org.strategoxt.imp.runtime.dynamicloading.Descriptor) at org.strategoxt.imp.runtime.dynamicloading.AbstractService.getWrapped(AbstractService.java:44) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.getWrapped(DynamicParseController.java:69) at org.strategoxt.imp.editors.stratego.StrategoSugarParseController.getWrapped(StrategoSugarParseController.java:81) at org.strategoxt.imp.runtime.dynamicloading.DynamicParseController.reinitialize(DynamicParseController.java:152) at org.strategoxt.imp.runtime.dynamicloading.Descriptor.reinitialize(Descriptor.java:119) - locked <0x00007f6c674300a0> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.runtime.Environment.registerUnmanagedParseTable(Environment.java:271) - locked <0x00007f6c354a0c08> (a java.util.Collections$SynchronizedMap) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.updateResource(DynamicDescriptorLoader.java:185) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:144) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader.postResourceChanged(DynamicDescriptorLoader.java:148) at org.strategoxt.imp.metatooling.loading.DynamicDescriptorLoader$1.runInWorkspace(DynamicDescriptorLoader.java:127) - locked <0x00007f6c2302a618> (a java.lang.Class for org.strategoxt.imp.runtime.Environment) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Found 1 deadlock.
Issue Log
On 17 May 2010 at 18:56 Lennart Kats commented:
Fixed in r20856: caused by a conflicting lock order between
Descriptor
instances andEnvironment.descriptors
. (I think this is the first deadlock that’s not caused by the way how SWT manages threads but just by Spoofax’s own locks!)
Log in to post comments