JPPF Issue Tracker
star_faded.png
Please log in to bookmark issues
bug_report_small.png
CLOSED  Bug report JPPF-148  -  Deadlock in the admin console at startup
Posted May 21, 2013 - updated May 21, 2013
icon_info.png This issue has been closed with status "Closed" and resolution "RESOLVED".
Issue details
  • Type of issue
    Bug report
  • Status
     
    Closed
  • Assigned to
     lolo4j
  • Progress
       
  • Type of bug
    Not triaged
  • Likelihood
    Not triaged
  • Effect
    Not triaged
  • Posted by
     lolo4j
  • Owned by
    Not owned by anyone
  • Category
    Management / Monitoring
  • Resolution
    RESOLVED
  • Priority
    Normal
  • Reproducability
    Rarely
  • Severity
    Normal
  • Targetted for
    icon_milestones.png JPPF 3.3.2
Issue description
Some times the admin conosle freezes at startup, just before the main screen is displayed. Looking at the threads with VisualVM, I found the following 4 threads are blocking each other:
"main" prio=6 tid=0x000000000211e000 nid=0xbe8 in Object.wait() [0x00000000025ae000]
   java.lang.Thread.State: WAITING (on object monitor)
  at java.lang.Object.wait(Native Method)
  - waiting on <0x00000000fc0056e0> (a javax.swing.text.PlainDocument)
  at java.lang.Object.wait(Object.java:503)
  at javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1387)
  - locked <0x00000000fc0056e0> (a javax.swing.text.PlainDocument)
  at javax.swing.plaf.basic.BasicTextUI.getMinimumSize(BasicTextUI.java:942)
  at javax.swing.plaf.basic.BasicTextAreaUI.getMinimumSize(BasicTextAreaUI.java:134)
  at javax.swing.JComponent.getMinimumSize(JComponent.java:1742)
  at javax.swing.BoxLayout.checkRequests(BoxLayout.java:482)
  at javax.swing.BoxLayout.maximumLayoutSize(BoxLayout.java:350)
  - locked <0x00000000fc0ffd18> (a javax.swing.BoxLayout)
  at java.awt.Container.getMaximumSize(Container.java:1885)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at javax.swing.JComponent.getMaximumSize(JComponent.java:1704)
  at net.miginfocom.swing.SwingComponentWrapper.getLayoutHashCode(Unknown Source)
  at net.miginfocom.swing.MigLayout.checkCache(Unknown Source)
  at net.miginfocom.swing.MigLayout.getSizeImpl(Unknown Source)
  at net.miginfocom.swing.MigLayout.preferredLayoutSize(Unknown Source)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.preferredSize(Container.java:1788)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.getPreferredSize(Container.java:1773)
  at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
  at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:95)
  at java.awt.Container.preferredSize(Container.java:1788)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.getPreferredSize(Container.java:1773)
  at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
  at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:492)
  at java.awt.Container.preferredSize(Container.java:1788)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.getPreferredSize(Container.java:1773)
  at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
  at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSize(BasicTabbedPaneUI.java:2301)
  at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.preferredLayoutSize(BasicTabbedPaneUI.java:2276)
  at java.awt.Container.preferredSize(Container.java:1788)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.getPreferredSize(Container.java:1773)
  at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
  at net.miginfocom.swing.SwingComponentWrapper.getLayoutHashCode(Unknown Source)
  at net.miginfocom.swing.MigLayout.checkCache(Unknown Source)
  at net.miginfocom.swing.MigLayout.layoutContainer(Unknown Source)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.layout(Container.java:1503)
  at java.awt.Container.doLayout(Container.java:1492)
  at java.awt.Container.validateTree(Container.java:1688)
  at java.awt.Container.validateTree(Container.java:1697)
  at java.awt.Container.validateTree(Container.java:1697)
  at java.awt.Container.validateTree(Container.java:1697)
  at java.awt.Container.validateTree(Container.java:1697)
  at java.awt.Container.validate(Container.java:1623)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.validateUnconditionally(Container.java:1660)
  - locked <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Window.show(Window.java:1033)
  at java.awt.Component.show(Component.java:1651)
  at java.awt.Component.setVisible(Component.java:1603)
  at java.awt.Window.setVisible(Window.java:1014)
  at org.jppf.ui.monitoring.UILauncher.main(UILauncher.java:100)
  at org.jppf.ui.monitoring.ConsoleLoader.startWithCheckNoDownload(ConsoleLoader.java:111)
  at org.jppf.ui.monitoring.ConsoleLoader.main(ConsoleLoader.java:73)
   Locked ownable synchronizers:
  - None
 
"JVM Health Update Timer" prio=6 tid=0x000000000afe5000 nid=0xc04 waiting for monitor entry [0x000000001372f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
  at java.awt.Component.invalidate(Component.java:2916)
  - waiting to lock <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.invalidate(Container.java:1580)
  at org.jppf.ui.monitoring.diagnostics.JVMHealthPanel.repaintTreeTable(JVMHealthPanel.java:135)
  at org.jppf.ui.monitoring.diagnostics.JVMHealthPanel.refreshSnapshots(JVMHealthPanel.java:189)
  - locked <0x00000000fc04d3a0> (a org.jppf.ui.monitoring.diagnostics.JVMHealthPanel)
  at org.jppf.ui.monitoring.diagnostics.RefreshHandler.refresh(RefreshHandler.java:89)
  at org.jppf.ui.monitoring.diagnostics.RefreshHandler$1.run(RefreshHandler.java:122)
  at java.util.TimerThread.mainLoop(Timer.java:555)
  at java.util.TimerThread.run(Timer.java:505)
   Locked ownable synchronizers:
  - None
 
"pool-2-thread-1" prio=6 tid=0x000000000afde000 nid=0xc90 waiting for monitor entry [0x0000000012baf000]
   java.lang.Thread.State: BLOCKED (on object monitor)
  at org.jppf.ui.monitoring.diagnostics.JVMHealthPanel.nodeAdded(JVMHealthPanel.java:252)
  - waiting to lock <0x00000000fc04d3a0> (a org.jppf.ui.monitoring.diagnostics.JVMHealthPanel)
  at org.jppf.ui.monitoring.node.NodeDataPanelManager.fireNodeAdded(NodeDataPanelManager.java:417)
  at org.jppf.ui.monitoring.node.NodeDataPanelManager.nodeAdded(NodeDataPanelManager.java:198)
  at org.jppf.ui.monitoring.node.NodeDataPanel$4.run(NodeDataPanel.java:210)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
  at java.lang.Thread.run(Thread.java:722)
   Locked ownable synchronizers:
  - 0x00000000fc0f7f90> (a java.util.concurrent.ThreadPoolExecutor$Worker)
 
"AWT-EventQueue-0" prio=6 tid=0x000000000ad17800 nid=0xe20 waiting for monitor entry [0x000000000e53e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
  at java.awt.Component.invalidate(Component.java:2916)
  - waiting to lock <0x00000000e03bde60> (a java.awt.Component$AWTTreeLock)
  at java.awt.Container.invalidate(Container.java:1580)
  at javax.swing.JComponent.revalidate(JComponent.java:4851)
  at javax.swing.plaf.basic.BasicTextUI$RootView.preferenceChanged(BasicTextUI.java:1406)
  at javax.swing.text.View.preferenceChanged(View.java:289)
  at javax.swing.text.PlainView.updateDamage(PlainView.java:554)
  at javax.swing.text.PlainView.insertUpdate(PlainView.java:451)
  at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1602)
  at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1861)
  at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:202)
  at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:749)
  at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:708)
  at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
  at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:670)
  at javax.swing.text.JTextComponent.setText(JTextComponent.java:1718)
  at org.jppf.ui.options.TextAreaOption$1.run(TextAreaOption.java:118)
  at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
  at java.awt.EventQueue.access$000(EventQueue.java:102)
  at java.awt.EventQueue$3.run(EventQueue.java:662)
  at java.awt.EventQueue$3.run(EventQueue.java:660)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
   Locked ownable synchronizers:
  - None
Steps to reproduce this issue
try and start the admin console until the console freezes at startup

#4
Comment posted by
 lolo4j
May 21, 07:33
Fixed. Changes committed to SVN:

The issue was updated with the following change(s):
  • This issue has been closed
  • The status has been updated, from New to Closed.
  • This issue's progression has been updated to 100 percent completed.
  • The resolution has been updated, from Not determined to RESOLVED.
  • Information about the user working on this issue has been changed, from lolo4j to Not being worked on.