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

use of ImageIcon might cause deadlock with sandbox webstart application

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P2 P2
    • None
    • 7
    • deploy
    • None
    • generic
    • generic

      for the demos at http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html, it seems like we try to show a security dialog and run into deadlock:

      network: Connecting http://download.oracle.com/crossdomain.xml with proxy=DIRECT
      network: Connecting socket://173.223.232.169:80 with proxy=DIRECT
      preloader: Stop progressCheck thread
      Dump thread stack ...
      ----------------------------------------------------
      2011-11-29 15:10:17
      Full thread dump Java HotSpot(TM) Client VM (21.1-b02 mixed mode, sharing):

      "D3D Screen Updater" daemon prio=8 tid=0x044a6c00 nid=0x1754 in Object.wait() [0x061cf000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28f128b8> (a java.lang.Object)
      at sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
      - locked <0x28f128b8> (a java.lang.Object)
      at java.lang.Thread.run(Unknown Source)

      "AWT-EventQueue-0" prio=6 tid=0x044a7000 nid=0x1460 waiting on condition [0x0656e000]
         java.lang.Thread.State: WAITING (parking)
      at sun.misc.Unsafe.park(Native Method)
      - parking to wait for <0x28d63120> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
      at java.util.concurrent.locks.LockSupport.park(Unknown Source)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
      at java.awt.EventQueue.getNextEvent(Unknown Source)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.WaitDispatchSupport$2.run(Unknown Source)
      at java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.awt.WaitDispatchSupport.enter(Unknown Source)
      at java.awt.Dialog.show(Unknown Source)
      at java.awt.Component.show(Unknown Source)
      at java.awt.Component.setVisible(Unknown Source)
      at java.awt.Window.setVisible(Unknown Source)
      at java.awt.Dialog.setVisible(Unknown Source)
      at com.sun.javaws.ui.JavawsSysRun.delegateFromEDT(Unknown Source)
      at com.sun.javaws.ui.JavawsSysRun.delegate(Unknown Source)
      at com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
      at com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
      at com.sun.deploy.ui.UIFactory.showApiDialog(Unknown Source)
      at com.sun.deploy.uitoolkit.impl.awt.ui.UIFactoryImpl.showMessageDialog(Unknown Source)
      at com.sun.jnlp.ApiDialog.askUser(Unknown Source)
      at com.sun.jnlp.ApiDialog.askUser(Unknown Source)
      at com.sun.jnlp.ApiDialog.askConnect(Unknown Source)
      at com.sun.javaws.security.JavaWebStartSecurity.checkConnect(Unknown Source)
      at java.net.InetAddress.getAllByName0(Unknown Source)
      at java.net.InetAddress.getAllByName(Unknown Source)
      at java.net.InetAddress.getAllByName(Unknown Source)
      at java.net.InetAddress.getByName(Unknown Source)
      at java.net.URLStreamHandler.getHostAddress(Unknown Source)
      - locked <0x28de4138> (a sun.net.www.protocol.http.Handler)
      at java.net.URLStreamHandler.hashCode(Unknown Source)
      at java.net.URL.hashCode(Unknown Source)
      - locked <0x28f12d08> (a java.net.URL)
      at sun.net.www.protocol.jar.Handler.hashCode(Unknown Source)
      at java.net.URL.hashCode(Unknown Source)
      - locked <0x28f12d60> (a java.net.URL)
      at java.util.HashMap.get(Unknown Source)
      at sun.misc.SoftCache.get(Unknown Source)
      at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
      - locked <0x28de4148> (a sun.misc.SoftCache)
      at sun.awt.SunToolkit.getImage(Unknown Source)
      at javax.swing.ImageIcon.<init>(Unknown Source)
      at components.LabelDemo.createImageIcon(LabelDemo.java:84)
      at components.LabelDemo.<init>(LabelDemo.java:53)
      at components.LabelDemo.createAndShowGUI(LabelDemo.java:102)
      at components.LabelDemo.access$000(LabelDemo.java:48)
      at components.LabelDemo$1.run(LabelDemo.java:117)
      at java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.awt.EventQueue.access$000(Unknown Source)
      at java.awt.EventQueue$3.run(Unknown Source)
      at java.awt.EventQueue$3.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
      at java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.run(Unknown Source)

      "AWT-EventQueue-1" prio=6 tid=0x044a6000 nid=0x608 waiting on condition [0x064ce000]
         java.lang.Thread.State: RUNNABLE
      at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacksImpl(Native Method)
      at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacks(Unknown Source)
      at com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$2.actionPerformed(Unknown Source)
      at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source)
      at javax.swing.SwingUtilities.notifyAction(Unknown Source)
      at javax.swing.JComponent.processKeyBinding(Unknown Source)
      at javax.swing.KeyboardManager.fireBinding(Unknown Source)
      at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
      at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
      at javax.swing.JComponent.processKeyBindings(Unknown Source)
      at javax.swing.JComponent.processKeyEvent(Unknown Source)
      at java.awt.Component.processEvent(Unknown Source)
      at java.awt.Container.processEvent(Unknown Source)
      at java.awt.Component.dispatchEventImpl(Unknown Source)
      at java.awt.Container.dispatchEventImpl(Unknown Source)
      at java.awt.Component.dispatchEvent(Unknown Source)
      at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
      at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
      at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
      at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
      at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
      at java.awt.Component.dispatchEventImpl(Unknown Source)
      at java.awt.Container.dispatchEventImpl(Unknown Source)
      at java.awt.Window.dispatchEventImpl(Unknown Source)
      at java.awt.Component.dispatchEvent(Unknown Source)
      at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.awt.EventQueue.access$000(Unknown Source)
      at java.awt.EventQueue$3.run(Unknown Source)
      at java.awt.EventQueue$3.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
      at java.awt.EventQueue$4.run(Unknown Source)
      at java.awt.EventQueue$4.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
      at java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.run(Unknown Source)

      "AWT-Shutdown" prio=6 tid=0x044a5800 nid=0x15fc in Object.wait() [0x062cf000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de4368> (a java.lang.Object)
      at java.lang.Object.wait(Object.java:503)
      at sun.awt.AWTAutoShutdown.run(Unknown Source)
      - locked <0x28de4368> (a java.lang.Object)
      at java.lang.Thread.run(Unknown Source)

      "CacheCleanUpThread" daemon prio=6 tid=0x044a4400 nid=0x1038 in Object.wait() [0x06b7f000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de4390> (a com.sun.deploy.cache.CleanupThread)
      at java.lang.Object.wait(Object.java:503)
      at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
      - locked <0x28de4390> (a com.sun.deploy.cache.CleanupThread)

      "CacheMemoryCleanUpThread" daemon prio=6 tid=0x044a4000 nid=0x1474 in Object.wait() [0x06a4f000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de4480> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      - locked <0x28de4480> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

      "TimerQueue" daemon prio=6 tid=0x0448e000 nid=0x1350 waiting on condition [0x0623f000]
         java.lang.Thread.State: WAITING (parking)
      at sun.misc.Unsafe.park(Native Method)
      - parking to wait for <0x28de4508> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
      at java.util.concurrent.locks.LockSupport.park(Unknown Source)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
      at java.util.concurrent.DelayQueue.take(Unknown Source)
      at javax.swing.TimerQueue.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

      "ConsoleTraceListener" daemon prio=6 tid=0x04473800 nid=0xfd4 in Object.wait() [0x068df000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de45e8> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
      at com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source)
      - locked <0x28de45e8> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)

      "DestroyJavaVM" prio=6 tid=0x0007c000 nid=0xca0 waiting on condition [0x00000000]
         java.lang.Thread.State: RUNNABLE

      "Javaws Secure Thread" daemon prio=6 tid=0x043d2c00 nid=0x1008 waiting for monitor entry [0x0615f000]
         java.lang.Thread.State: BLOCKED (on object monitor)
      at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
      - waiting to lock <0x28de4148> (a sun.misc.SoftCache)
      at sun.awt.SunToolkit.getImage(Unknown Source)
      at javax.swing.ImageIcon.<init>(Unknown Source)
      at javax.swing.ImageIcon.<init>(Unknown Source)
      at com.sun.deploy.resources.ResourceManager.getIcon(Unknown Source)
      at com.sun.deploy.ui.DialogTemplate.createTopPanel(Unknown Source)
      at com.sun.deploy.ui.DialogTemplate.setApiContent(Unknown Source)
      at com.sun.deploy.ui.UIFactory$10.execute(Unknown Source)
      at com.sun.javaws.ui.JavawsSysRun$SecureThread.doWork(Unknown Source)
      at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
      - locked <0x28de4700> (a java.lang.Object)

      "AWT-Windows" daemon prio=6 tid=0x043cd000 nid=0xf7c runnable [0x0198f000]
         java.lang.Thread.State: RUNNABLE
      at sun.awt.windows.WToolkit.eventLoop(Native Method)
      at sun.awt.windows.WToolkit.run(Unknown Source)

      "Java2D Disposer" daemon prio=10 tid=0x043c8400 nid=0x1514 in Object.wait() [0x0606f000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de47d8> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      - locked <0x28de47d8> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      at sun.java2d.Disposer.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

      "traceMsgQueueThread" daemon prio=6 tid=0x04380000 nid=0x4e4 in Object.wait() [0x041ff000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28d0b4f0> (a java.util.ArrayList)
      at java.lang.Object.wait(Object.java:503)
      at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source)
      - locked <0x28d0b4f0> (a java.util.ArrayList)
      at java.lang.Thread.run(Unknown Source)

      "Service Thread" daemon prio=6 tid=0x01875000 nid=0xf78 runnable [0x00000000]
         java.lang.Thread.State: RUNNABLE

      "C1 CompilerThread0" daemon prio=10 tid=0x0186ac00 nid=0x1290 waiting on condition [0x00000000]
         java.lang.Thread.State: RUNNABLE

      "Attach Listener" daemon prio=10 tid=0x01869800 nid=0xa4 runnable [0x00000000]
         java.lang.Thread.State: RUNNABLE

      "Signal Dispatcher" daemon prio=10 tid=0x01866800 nid=0x1698 runnable [0x00000000]
         java.lang.Thread.State: RUNNABLE

      "Finalizer" daemon prio=8 tid=0x01854000 nid=0x13b4 in Object.wait() [0x03ccf000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de4a78> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      - locked <0x28de4a78> (a java.lang.ref.ReferenceQueue$Lock)
      at java.lang.ref.ReferenceQueue.remove(Unknown Source)
      at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

      "Reference Handler" daemon prio=10 tid=0x0184f400 nid=0x11c0 in Object.wait() [0x03c3f000]
         java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)
      - waiting on <0x28de41e0> (a java.lang.ref.Reference$Lock)
      at java.lang.Object.wait(Object.java:503)
      at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
      - locked <0x28de41e0> (a java.lang.ref.Reference$Lock)

      "VM Thread" prio=10 tid=0x01843400 nid=0x1118 runnable

      "VM Periodic Task Thread" prio=10 tid=0x01877800 nid=0x1414 waiting on condition

      ce$ReferenceHandler.run(Unknown Source)
      - locked <0x28de41e0> (a java.lang.ref.Reference$Lock)

      "VM Thread" prio=10 tid=0x01843400 nid=0x1118 runnable

      "VM Periodic Task Thread" prio=10 tid=0x01877800 nid=0x1414 waiting on condition


      ----------------------------------------------------
      Done.

            dcherepanov Dmitry Cherepanov
            ngthomas Thomas Ng (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: