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.

2010-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.
Submitted by Nathan Bruning on 17 May 2010 at 18:00

On 17 May 2010 at 18:56 Lennart Kats commented:

Fixed in r20856: caused by a conflicting lock order between Descriptor instances and Environment.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