Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deadlock in plugin #4

Closed
awallgren opened this issue Jun 8, 2012 · 5 comments
Closed

Deadlock in plugin #4

awallgren opened this issue Jun 8, 2012 · 5 comments

Comments

@awallgren
Copy link

Java-level deadlock has 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:

ApplicationImpl pooled thread 0 is waiting to lock java.awt.Component$AWTTreeLock@1caee107 which is held by AWT-EventQueue-0 11.1.3#IU-117.499, eap:true
AWT-EventQueue-0 11.1.3#IU-117.499, eap:true is waiting to lock java.lang.Object@1d37a147 which is held by ApplicationImpl pooled thread 0

Thread stacks

ApplicationImpl pooled thread 0 [BLOCKED; waiting to lock java.awt.Component$AWTTreeLock@1caee107]
java.awt.Component.setFont(Component.java:1874)
java.awt.Container.setFont(Container.java:1743)
javax.swing.JComponent.setFont(JComponent.java:2751)
javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:208)
javax.swing.plaf.basic.BasicLabelUI.installDefaults(BasicLabelUI.java:339)
javax.swing.plaf.basic.BasicLabelUI.installUI(BasicLabelUI.java:324)
javax.swing.JComponent.setUI(JComponent.java:664)
javax.swing.JLabel.setUI(JLabel.java:260)
javax.swing.JLabel.updateUI(JLabel.java:274)
javax.swing.JLabel.(JLabel.java:163)
javax.swing.JLabel.(JLabel.java:234)
javax.swing.DefaultListCellRenderer.(DefaultListCellRenderer.java:92)
pl.mjedynak.idea.plugins.builder.renderer.ActionCellRenderer.(ActionCellRenderer.java:9)
pl.mjedynak.idea.plugins.builder.factory.impl.PopupListFactoryImpl.(PopupListFactoryImpl.java:13)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(native method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193)
org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:220)
org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:60)
org.picocontainer.defaults.CachingComponentAdapter.getComponentInstance(CachingComponentAdapter.java:58)
org.picocontainer.defaults.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:395)
org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:375)
org.picocontainer.defaults.BasicComponentParameter.resolveInstance(BasicComponentParameter.java:77)
org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:114)
org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:217)
org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:60)
org.picocontainer.defaults.CachingComponentAdapter.getComponentInstance(CachingComponentAdapter.java:58)
org.picocontainer.defaults.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:395)
org.picocontainer.defaults.DefaultPicoContainer.getComponentInstanceOfType(DefaultPicoContainer.java:383)
pl.mjedynak.idea.plugins.builder.action.GoToBuilderAction.(GoToBuilderAction.java:57)
java.lang.Class.forName0(native method)
java.lang.Class.forName(Class.java:264)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:242)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:220)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:213)
com.intellij.openapi.actionSystem.DefaultActionGroup.unstub(DefaultActionGroup.java:261)
com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:240)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1143)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1137)
com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:892)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1137)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1151)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1151)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.preloadActionGroup(ActionManagerImpl.java:1131)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.d(ActionManagerImpl.java:1120)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.access$200(ActionManagerImpl.java:66)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl$4.run(ActionManagerImpl.java:1106)
com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.java:434)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
java.util.concurrent.FutureTask.run(FutureTask.java:166)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:145)

AWT-EventQueue-0 11.1.3#IU-117.499, eap:true [BLOCKED; waiting to lock java.lang.Object@1d37a147]
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:218)
com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:213)
com.intellij.ide.navigationToolbar.NavBarRootPaneExtension.runToolbarExists(NavBarRootPaneExtension.java:79)
com.intellij.ide.navigationToolbar.NavBarBorder.getBorderInsets(NavBarBorder.java:50)
javax.swing.JComponent.getInsets(JComponent.java:1824)
javax.swing.JScrollPane.getViewportBorderBounds(JScrollPane.java:610)
javax.swing.plaf.basic.BasicScrollPaneUI.paint(BasicScrollPaneUI.java:105)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
javax.swing.JComponent.paintComponent(JComponent.java:778)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
javax.swing.RepaintManager.paint(RepaintManager.java:1206)
javax.swing.JComponent.paint(JComponent.java:1040)
java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
java.awt.Container.paint(Container.java:1967)
java.awt.Window.paint(Window.java:3877)
com.intellij.openapi.wm.impl.IdeFrameImpl.paint(IdeFrameImpl.java:427)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
javax.swing.RepaintManager.access$700(RepaintManager.java:59)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
java.awt.EventQueue.access$000(EventQueue.java:102)
java.awt.EventQueue$3.run(EventQueue.java:662)
java.awt.EventQueue$3.run(EventQueue.java:660)
java.security.AccessController.doPrivileged(native method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:699)
com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:538)
com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:420)
com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:378)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

@mjedynak
Copy link
Owner

Could you give any hints how to reproduce this? I've never encountered this and the stacktrace doesn't tell me much..

@awallgren
Copy link
Author

It happened on startup immediately after installing the plugin.

How familiar are you with diagnosing deadlocks? The information in the
bug report should be sufficient. Thread A has lock 1, needs lock 2.
Thread B has lock 2, needs lock 1.

anders

On Jun 10, 2012, at 5:23, Michal Jedynak
reply@reply.github.com
wrote:

Could you give any hints how to reproduce this? I've never encountered this and the stacktrace doesn't tell me much..


Reply to this email directly or view it on GitHub:
#4 (comment)

@krasa
Copy link

krasa commented Jul 9, 2013

Happened to me too. On startup while opening a second project.
http://pastebin.com/N7Fh3qr3

@mjedynak
Copy link
Owner

mjedynak commented Sep 4, 2013

I wasn't able to reproduce the issue, but in version 1.0.7 I changed the creation of cell renderer object that was in a blocked state. I hope it solves the issue.

@krasa
Copy link

krasa commented Apr 29, 2014

It is quite rare but it still happens. IJ 135.760, plugin 1.0.9


"ApplicationImpl pooled thread 6" prio=0 tid=0x0 nid=0x0 blocked
     java.lang.Thread.State: BLOCKED
 on java.awt.Component$AWTTreeLock@7903fe10 owned by "AWT-EventQueue-0 13.1.3#IU-135.760, eap:true" Id=27
    at java.awt.Component.setFont(Component.java:1874)
    at java.awt.Container.setFont(Container.java:1743)
    at javax.swing.JComponent.setFont(JComponent.java:2750)
    at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:208)
    at javax.swing.plaf.basic.BasicLabelUI.installDefaults(BasicLabelUI.java:339)
    at javax.swing.plaf.basic.BasicLabelUI.installUI(BasicLabelUI.java:324)
    at javax.swing.JComponent.setUI(JComponent.java:664)
    at javax.swing.JLabel.setUI(JLabel.java:260)
    at javax.swing.JLabel.updateUI(JLabel.java:274)
    at javax.swing.JLabel.<init>(JLabel.java:163)
    at javax.swing.JLabel.<init>(JLabel.java:234)
    at javax.swing.DefaultListCellRenderer.<init>(DefaultListCellRenderer.java:92)
    at pl.mjedynak.idea.plugins.builder.renderer.ActionCellRenderer.<init>(ActionCellRenderer.java:9)
    at pl.mjedynak.idea.plugins.builder.factory.PopupListFactory.<init>(PopupListFactory.java:12)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193)
    at org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:220)
    at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
    at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
    at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:60)
    at org.picocontainer.defaults.CachingComponentAdapter.getComponentInstance(CachingComponentAdapter.java:58)
    at org.picocontainer.defaults.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:395)
    at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:375)
    at org.picocontainer.defaults.BasicComponentParameter.resolveInstance(BasicComponentParameter.java:77)
    at org.picocontainer.defaults.ComponentParameter.resolveInstance(ComponentParameter.java:114)
    at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getConstructorArguments(ConstructorInjectionComponentAdapter.java:257)
    at org.picocontainer.defaults.ConstructorInjectionComponentAdapter$1.run(ConstructorInjectionComponentAdapter.java:217)
    at org.picocontainer.defaults.ThreadLocalCyclicDependencyGuard.observe(ThreadLocalCyclicDependencyGuard.java:53)
    at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getComponentInstance(ConstructorInjectionComponentAdapter.java:248)
    at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:60)
    at org.picocontainer.defaults.CachingComponentAdapter.getComponentInstance(CachingComponentAdapter.java:58)
    at org.picocontainer.defaults.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:395)
    at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstanceOfType(DefaultPicoContainer.java:383)
    at pl.mjedynak.idea.plugins.builder.action.GoToBuilderAction.<clinit>(GoToBuilderAction.java:57)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:262)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:239)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:232)
    at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:345)
    at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:303)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1261)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1254)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1254)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1269)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1269)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.preloadActionGroup(ActionManagerImpl.java:1248)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.c(ActionManagerImpl.java:1236)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.access$200(ActionManagerImpl.java:73)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$4.run(ActionManagerImpl.java:1220)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants