Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7151115

Deadlock in awt/swing when plugging&unplugging external monitor

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 7
    • client-libs
    • x86
    • linux

      FULL PRODUCT VERSION :
      ava version "1.8.0-ea"
      Java(TM) SE Runtime Environment (build 1.8.0-ea-b28)
      Java HotSpot(TM) 64-Bit Server VM (build 24.0-b01, mixed mode)


      ADDITIONAL OS VERSION INFORMATION :
      Fedora 17: kernel 3.3.0-0.rc5.git3.1.fc17.x86_64

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      Gnome 3

      A DESCRIPTION OF THE PROBLEM :
      When I unplugged and then plugged in an external monitor I noticed that squirrel java software had gone gray. Looking at the stack trace revealed a deadlock.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1) start squirrel sql
      2) unplug external monitor
      3) plug monitor back in


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Java software continues running.
      ACTUAL -
      Java window is constant grey and does not react to anything.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Found one Java-level deadlock:
      =============================
      "AWT-EventQueue-1":
        waiting for ownable synchronizer 0x00000006e47f63f8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
        which is held by "AWT-XAWT"
      "AWT-XAWT":
        waiting to lock monitor 0x00007fcff0699e00 (object 0x00000006e4508080, a java.awt.Component$AWTTreeLock),
        which is held by "AWT-EventQueue-1"

      Java stack information for the threads listed above:
      ===================================================
      "AWT-EventQueue-1":
      at sun.misc.Unsafe.park(Native Method)
      - parking to wait for <0x00000006e47f63f8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:868)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1198)
      at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)
      at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
      at sun.awt.SunToolkit.awtLock(SunToolkit.java:243)
      at sun.awt.X11.XDecoratedPeer.getLocationOnScreen(XDecoratedPeer.java:909)
      at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:2045)
      at java.awt.Component.getLocationOnScreen(Component.java:2023)
      - locked <0x00000006e4508080> (a java.awt.Component$AWTTreeLock)
      at javax.swing.SwingUtilities.convertPointToScreen(SwingUtilities.java:380)
      at javax.swing.SwingUtilities.convertPoint(SwingUtilities.java:182)
      at javax.swing.plaf.metal.MetalToolBarUI.doesMenuBarBorderToolBar(MetalToolBarUI.java:151)
      at javax.swing.plaf.metal.MetalBorders$MenuBarBorder.paintBorder(MetalBorders.java:536)
      at javax.swing.JComponent.paintBorder(JComponent.java:947)
      at javax.swing.JMenuBar.paintBorder(JMenuBar.java:341)
      at javax.swing.JComponent.paint(JComponent.java:1055)
      at javax.swing.JComponent.paintChildren(JComponent.java:887)
      - locked <0x00000006e4508080> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paint(JComponent.java:1063)
      at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
      at javax.swing.JComponent.paintChildren(JComponent.java:887)
      - locked <0x00000006e4508080> (a java.awt.Component$AWTTreeLock)
      at javax.swing.JComponent.paintToOffscreen(JComponent.java:5232)
      at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1486)
      at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1417)
      at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:306)
      at javax.swing.RepaintManager.paint(RepaintManager.java:1210)
      at javax.swing.JComponent.paint(JComponent.java:1040)
      at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
      at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
      at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
      at java.awt.Container.paint(Container.java:1968)
      at java.awt.Window.paint(Window.java:3867)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
      at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
      at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
      at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1625)
      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:75)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
      at net.sourceforge.squirrel_sql.client.Main$1.dispatchEvent(Main.java:99)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:216)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
      "AWT-XAWT":
      at java.awt.Component.getGraphicsConfiguration(Component.java:1142)
      - waiting to lock <0x00000006e4508080> (a java.awt.Component$AWTTreeLock)
      at sun.awt.image.SunVolatileImage.updateGraphicsConfig(SunVolatileImage.java:138)
      at sun.awt.image.VolatileSurfaceManager.displayChanged(VolatileSurfaceManager.java:344)
      at sun.awt.SunDisplayChanger.notifyListeners(SunDisplayChanger.java:132)
      at sun.java2d.SunGraphicsEnvironment.displayChanged(SunGraphicsEnvironment.java:281)
      at sun.awt.X11.XToolkit$1.dispatchEvent(XToolkit.java:323)
      at sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:593)
      at sun.awt.X11.XToolkit.run(XToolkit.java:688)
      at sun.awt.X11.XToolkit.run(XToolkit.java:609)
      at java.lang.Thread.run(Thread.java:722)


      REPRODUCIBILITY :
      This bug can be reproduced always.

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: