mbeddr.core icon indicating copy to clipboard operation
mbeddr.core copied to clipboard

Deadlock after make caused by cproverPreferences

Open slisson opened this issue 10 years ago • 1 comments

In the "after read" of "cproverPreferences" there is a reference to "CProverPreferencePanel.INSTANCE". If it is accessed for the first time inside "after read", that field is initialized by the thread that calls "after read", which is the "MPS Make" thread in this case. Swing components are not allowed to be created by any other thread than the AWT Event Thread or bad things will happen like this deadlock:

Java-level deadlocks have been detected

This means that some threads are blocked waiting to enter a synchronization block or
waiting to reenter a synchronization block after an Object.wait() call, where each thread
owns one monitor while trying to obtain another monitor already held by another thread.

Deadlock:


AWT-EventQueue-1 3.2#MPS-139.1493, eap:true is waiting to lock java.util.concurrent.locks.ReentrantReadWriteLock$FairSync@640c5413 which is held by MPS Make Thread
MPS Make Thread is waiting to lock java.awt.Component$AWTTreeLock@99a7a49 which is held by AWT-EventQueue-1 3.2#MPS-139.1493, eap:true



Deadlock:


MPS Make Thread is waiting to lock java.awt.Component$AWTTreeLock@99a7a49 which is held by AWT-EventQueue-1 3.2#MPS-139.1493, eap:true
AWT-EventQueue-1 3.2#MPS-139.1493, eap:true is waiting to lock java.util.concurrent.locks.ReentrantReadWriteLock$FairSync@640c5413 which is held by MPS Make Thread




Thread stacks


AWT-EventQueue-1 3.2#MPS-139.1493, eap:true [WAITING]
sun.misc.Unsafe.park(native method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:941)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1261)
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:677)
jetbrains.mps.ide.smodel.WorkbenchModelAccess$2.run(WorkbenchModelAccess.java:116)
com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:893)
jetbrains.mps.ide.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:113)
jetbrains.mps.ide.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:135)
jetbrains.mps.nodeEditor.DefaultEditorMessage.getCellInBothWays(DefaultEditorMessage.java:128)
jetbrains.mps.nodeEditor.DefaultEditorMessage.getStart(DefaultEditorMessage.java:106)
jetbrains.mps.nodeEditor.MessagesGutter.getMessageStart(MessagesGutter.java:417)
jetbrains.mps.nodeEditor.MessagesGutter.access$600(MessagesGutter.java:57)
jetbrains.mps.nodeEditor.MessagesGutter$3.compare(MessagesGutter.java:341)
jetbrains.mps.nodeEditor.MessagesGutter$3.compare(MessagesGutter.java:332)
java.util.Arrays.mergeSort(Arrays.java:1270)
java.util.Arrays.sort(Arrays.java:1210)
java.util.Collections.sort(Collections.java:157)
jetbrains.mps.nodeEditor.MessagesGutter.drawMarks(MessagesGutter.java:332)
jetbrains.mps.nodeEditor.MessagesGutter.doPaintTrack(MessagesGutter.java:158)
com.intellij.util.ui.ButtonlessScrollBarUI.paintTrack(ButtonlessScrollBarUI.java:617)
javax.swing.plaf.basic.BasicScrollBarUI.paint(BasicScrollBarUI.java:404)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:153)
javax.swing.JComponent.paintComponent(JComponent.java:760)
javax.swing.JComponent.paint(JComponent.java:1037)
javax.swing.JComponent.paintChildren(JComponent.java:870)
javax.swing.JComponent.paint(JComponent.java:1046)
javax.swing.JComponent.paintChildren(JComponent.java:870)
javax.swing.JComponent.paint(JComponent.java:1046)
javax.swing.JComponent._paintImmediately(JComponent.java:5106)
javax.swing.JComponent.paintImmediately(JComponent.java:4890)
javax.swing.RepaintManager$3.run(RepaintManager.java:814)
javax.swing.RepaintManager$3.run(RepaintManager.java:802)
java.security.AccessController.doPrivileged(native method)
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:802)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:745)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:725)
javax.swing.RepaintManager.access$1000(RepaintManager.java:46)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
java.awt.EventQueue.access$400(EventQueue.java:82)
java.awt.EventQueue$2.run(EventQueue.java:676)
java.awt.EventQueue$2.run(EventQueue.java:674)
java.security.AccessController.doPrivileged(native method)
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:748)
com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:577)
com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:384)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


MPS Make Thread [BLOCKED; waiting to lock java.awt.Component$AWTTreeLock@99a7a49]
java.awt.Component.setFont(Component.java:1830)
java.awt.Container.setFont(Container.java:1553)
javax.swing.JComponent.setFont(JComponent.java:2731)
javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:191)
javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:49)
javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:39)
javax.swing.JComponent.setUI(JComponent.java:670)
javax.swing.JPanel.setUI(JPanel.java:136)
javax.swing.JPanel.updateUI(JPanel.java:109)
javax.swing.JPanel.<init>(JPanel.java:69)
javax.swing.JPanel.<init>(JPanel.java:78)
com.mbeddr.analyses.cbmc.rt.ui.CProverPreferencePanel.<init>(CProverPreferencePanel.java:75)
com.mbeddr.analyses.cbmc.rt.ui.CProverPreferencePanel.<clinit>(CProverPreferencePanel.java:35)
com.mbeddr.analyses.cbmc.pluginSolution.plugin.cproverPreferences_PreferencesComponent.afterRead(cproverPreferences_PreferencesComponent.java:44)
com.mbeddr.analyses.cbmc.pluginSolution.plugin.cproverPreferences_PreferencesComponent.loadState(cproverPreferences_PreferencesComponent.java:28)
com.mbeddr.analyses.cbmc.pluginSolution.plugin.cproverPreferences_PreferencesComponent.loadState(cproverPreferences_PreferencesComponent.java:1)
jetbrains.mps.plugins.projectplugins.BaseProjectPlugin.loadState(BaseProjectPlugin.java:179)
jetbrains.mps.plugins.projectplugins.ProjectPluginManager.spreadState(ProjectPluginManager.java:245)
jetbrains.mps.plugins.projectplugins.ProjectPluginManager.afterPluginsCreated(ProjectPluginManager.java:175)
jetbrains.mps.plugins.BasePluginManager.loadPlugins(BasePluginManager.java:76)
jetbrains.mps.plugins.BasePluginManager$MyPluginReloadingListenerBase.pluginsLoading(BasePluginManager.java:165)
jetbrains.mps.plugins.PluginReloader.loadPlugins(PluginReloader.java:112)
jetbrains.mps.plugins.PluginReloader.access$600(PluginReloader.java:50)
jetbrains.mps.plugins.PluginReloader$MyReloadAdapter.afterClassesLoaded(PluginReloader.java:206)
jetbrains.mps.classloading.ClassLoadingBroadCaster.onLoad(ClassLoadingBroadCaster.java:92)
jetbrains.mps.classloading.ClassLoaderManager.preLoadModules(ClassLoaderManager.java:336)
jetbrains.mps.classloading.ClassLoaderManager.doReloadModules(ClassLoaderManager.java:487)
jetbrains.mps.classloading.ClassLoaderManager.reloadModules(ClassLoaderManager.java:450)
jetbrains.mps.classloading.ClassLoaderManager.reloadModules(ClassLoaderManager.java:506)
jetbrains.mps.make.facets.ReloadClasses_Facet$Target_reloadClasses$1$2.run(ReloadClasses_Facet.java:75)
jetbrains.mps.ide.smodel.WorkbenchModelAccess$7.compute(WorkbenchModelAccess.java:370)
jetbrains.mps.ide.smodel.WorkbenchModelAccess$7.compute(WorkbenchModelAccess.java:367)
jetbrains.mps.util.ComputeRunnable.compute(ComputeRunnable.java:32)
jetbrains.mps.util.AbstractComputeRunnable.run(AbstractComputeRunnable.java:27)
jetbrains.mps.smodel.WriteActionDispatcher.run(WriteActionDispatcher.java:39)
jetbrains.mps.smodel.WriteActionDispatcher.compute(WriteActionDispatcher.java:49)
jetbrains.mps.ide.smodel.WorkbenchModelAccess$8.compute(WorkbenchModelAccess.java:397)
com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:917)
jetbrains.mps.ide.smodel.WorkbenchModelAccess.tryWrite(WorkbenchModelAccess.java:414)
jetbrains.mps.ide.smodel.WorkbenchModelAccess.tryWrite(WorkbenchModelAccess.java:374)
jetbrains.mps.ide.smodel.WorkbenchModelAccess.requireWrite(WorkbenchModelAccess.java:425)
jetbrains.mps.make.facets.ReloadClasses_Facet$Target_reloadClasses$1.execute(ReloadClasses_Facet.java:73)
jetbrains.mps.internal.make.runtime.script.Script$3.invoke(Script.java:292)
jetbrains.mps.internal.make.runtime.script.Script$3.invoke(Script.java:235)
jetbrains.mps.ide.make.WorkbenchMakeService$Controller.runJobWithMonitor(WorkbenchMakeService.java:323)
jetbrains.mps.internal.make.runtime.script.Script.executeTargets(Script.java:235)
jetbrains.mps.internal.make.runtime.script.Script.execute(Script.java:213)
jetbrains.mps.make.service.CoreMakeTask$1.invoke(CoreMakeTask.java:104)
jetbrains.mps.make.service.CoreMakeTask$1.invoke(CoreMakeTask.java:78)
jetbrains.mps.make.dependencies.MakeSequence.iterate(MakeSequence.java:51)
jetbrains.mps.make.service.CoreMakeTask.doRun(CoreMakeTask.java:78)
jetbrains.mps.ide.make.MakeTask$WorkbenchMakeTask.doRun(MakeTask.java:135)
jetbrains.mps.make.service.CoreMakeTask.run(CoreMakeTask.java:58)
jetbrains.mps.ide.make.MakeTask$2.run(MakeTask.java:64)
java.lang.Thread.run(Thread.java:695)


slisson avatar Jan 26 '15 15:01 slisson