JDK-8028413 : Applet Classloader Deadlocks in 1.7 update 45
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 7u45
  • Priority: P3
  • Status: Closed
  • Resolution: Incomplete
  • OS: windows_7
  • Submitted: 2013-11-15
  • Updated: 2013-11-19
  • Resolved: 2013-11-19
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
Java Plug-in 10.45.2.18
Using JRE version 1.7.0_45-b18 Java HotSpot(TM) Client VM


ADDITIONAL OS VERSION INFORMATION :
Unknown; problem happens at ISV customers.  Probably multiple Windows OSes.

EXTRA RELEVANT SYSTEM CONFIGURATION :
None known.

A DESCRIPTION OF THE PROBLEM :
We have 6 (signed,privileged) applets on one web page.  The code for the 6 applets is in 4 .jar files.
The ARCHIVE tags for all 6 applet invocations list all 4 .jar files identically, so the applets are
loaded into the same classloader.  (They share much of the code.)  We intentionally put all the applets
into a single classloader because we hit classloading exceptions if one or more of the .jar files is
being downloaded multiple times simultaneously for different classloaders.

Starting in Java 1.7 Update 45, some of our customers (we are an ISV) see applet classloader deadlocks
such as the one below.  The deadlock appears to be (client) host- and timing-dependent, and I am
unable to replicate the problem myself.

We do not have a workaround for this.


REGRESSION.  Last worked in version 7u40

ADDITIONAL REGRESSION INFORMATION:
Java Plug-in 10.45.2.18
Using JRE version 1.7.0_45-b18 Java HotSpot(TM) Client VM


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
We have 6 (signed,privileged) applets on one web page.  The code for the 6 applets is in 4 .jar files.
The ARCHIVE tags for all 6 applet invocations list all 4 .jar files identically, so the applets are
loaded into the same classloader.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
We expect the applets to be loaded without a deadlock.
ACTUAL -
A deadlock.


We have 6 (signed,privileged) applets on one web page.  The code for the 6 applets is in 4 .jar files.
The ARCHIVE tags for all 6 applet invocations list all 4 .jar files identically, so the applets are
loaded into the same classloader.  (They share much of the code.)  We intentionally put all the applets
into a single classloader because we hit classloading exceptions if one or more of the .jar files is
being downloaded multiple times simultaneously for different classloaders.

Starting in Java 1.7 Update 45, some of our customers (we are an ISV) see applet classloader deadlocks
such as the one below.  The deadlock appears to be (client) host- and timing-dependent, and I am
unable to replicate the problem myself.

We do not have a workaround for this.

Threads applet-mypackage.myapplet5.class-10 and applet-mypackage.myapplet1.class-14 are deadlocked.





Java Plug-in 10.45.2.18
Using JRE version 1.7.0_45-b18 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\<username>
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
CacheEntry[https://myserverhost/mywebapp/applets/mymainappletjar.jar]: updateAvailable=true,lastModified=Tue Nov 12 15:05:35 EST 2013,length=93205
CacheEntry[https://myserverhost/mywebapp/applets/mylib1.jar]: updateAvailable=true,lastModified=Tue Nov 12 15:05:35 EST 2013,length=139256
CacheEntry[https://myserverhost/mywebapp/applets/mylib2.jar]: updateAvailable=true,lastModified=Tue Nov 12 15:05:35 EST 2013,length=41932
CacheEntry[https://myserverhost/mywebapp/applets/mylib3.jar]: updateAvailable=true,lastModified=Tue Nov 12 15:05:35 EST 2013,length=18172
Loading en_US text mypackage.TextBundle ... succeeded.
Loading en_US text mypackage.TextBundle ... succeeded.
Loading en_US text mypackage2.TextBundle ... succeeded.
Loading en_US text mypackage.TextBundle ... succeeded.
Dump thread stack ...
----------------------------------------------------
2013-11-12 16:30:46
Full thread dump Java HotSpot(TM) Client VM (24.45-b08 mixed mode, sharing):

"thread applet-mypackage.myapplet1.class-14" prio=4 tid=0x03f4fc00 nid=0xee4 waiting for monitor entry [0x052fb000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
- waiting to lock <0x2816a2d8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.CachedJarFile.getCacheEntry(Unknown Source)
- locked <0x22ada7d0> (a com.sun.deploy.cache.CachedJarFile)
at com.sun.deploy.cache.CachedJarFile.getManifest(Unknown Source)
- locked <0x22ada7d0> (a com.sun.deploy.cache.CachedJarFile)
at com.sun.deploy.util.JarUtil.isBlobSigned(Unknown Source)
at com.sun.deploy.cache.CacheEntry.getJarFile(Unknown Source)
- locked <0x287b7550> (a com.sun.deploy.cache.CacheEntry)
at com.sun.deploy.model.ResourceProvider.getCachedJarFile(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)
- locked <0x287b76d0> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
- locked <0x287b76d0> (a sun.plugin.net.protocol.jar.CachedJarURLConnection)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
- locked <0x286e8150> (a com.sun.deploy.security.DeployURLClassPath)
at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e81c0> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"thread applet-mypackage.myapplet2.class-13" prio=4 tid=0x03f4f400 nid=0xfa0 waiting for monitor entry [0x0479f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- waiting to lock <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"thread applet-mypackage.myapplet3.class-12" prio=4 tid=0x049bf000 nid=0x30c waiting for monitor entry [0x0450f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- waiting to lock <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"thread applet-mypackage.myapplet4.class-11" prio=4 tid=0x048b6400 nid=0xd5c waiting for monitor entry [0x043cf000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- waiting to lock <0x286e8268> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"thread applet-mypackage.myapplet5.class-10" prio=4 tid=0x049d3800 nid=0x838 waiting for monitor entry [0x0406c000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.deploy.cache.CacheEntry.storageFilesExist(Unknown Source)
- waiting to lock <0x287b7550> (a com.sun.deploy.cache.CacheEntry)
at com.sun.deploy.cache.MemoryCache.validateResource(Unknown Source)
at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
- locked <0x2816a2d8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
- locked <0x2816a2d8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.model.ResourceProvider.getCachedResource(Unknown Source)
at com.sun.deploy.model.ResourceProvider.getCachedJarFile(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.getPermissions(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.getPermissions(Unknown Source)
at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
- locked <0x286ebfa0> (a java.util.HashMap)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
- locked <0x286e8758> (a sun.plugin2.applet.Applet2ClassLoader)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"AWT-EventQueue-7" prio=4 tid=0x04a2b400 nid=0x97c waiting on condition [0x0446f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x286e8968> (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.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"Applet 14 LiveConnect Worker Thread" prio=4 tid=0x049d2c00 nid=0xd30 in Object.wait() [0x0474f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x286e8a28> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x286e8a28> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Applet 13 LiveConnect Worker Thread" prio=4 tid=0x048e7800 nid=0xb94 in Object.wait() [0x044bf000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x286e8ab0> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x286e8ab0> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"AWT-EventQueue-6" prio=4 tid=0x03c30400 nid=0x14c waiting on condition [0x03b7f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x286e8b40> (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.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"Applet 12 LiveConnect Worker Thread" prio=4 tid=0x049d7800 nid=0xef8 in Object.wait() [0x0437f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x286e8c20> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x286e8c20> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Applet 11 LiveConnect Worker Thread" prio=4 tid=0x03ba7800 nid=0xc78 in Object.wait() [0x042df000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x286e8ca8> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x286e8ca8> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Applet 10 LiveConnect Worker Thread" prio=4 tid=0x0348b800 nid=0xaa0 in Object.wait() [0x0401f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x286e8d30> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x286e8d30> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Swing-Shell" daemon prio=4 tid=0x03cfa400 nid=0x2f0 waiting on condition [0x0458f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x2863ff88> (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.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"thread applet-mypackage3.myapplet6.class-1" prio=4 tid=0x03444c00 nid=0x8d8 in Object.wait() [0x03adf000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28047f88> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
- locked <0x28047f88> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"AWT-EventQueue-2" prio=4 tid=0x0342dc00 nid=0x2dc waiting on condition [0x0355f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x281457c8> (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.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"JVM[id=1]-Heartbeat" daemon prio=6 tid=0x03431800 nid=0xb44 in Object.wait() [0x03b2f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28145840> (a sun.plugin2.main.client.PluginMain$Heartbeat)
at sun.plugin2.main.server.HeartbeatThread.run(Unknown Source)
- locked <0x28145840> (a sun.plugin2.main.client.PluginMain$Heartbeat)

"Applet 1 LiveConnect Worker Thread" prio=4 tid=0x0342e800 nid=0x70c in Object.wait() [0x03a8f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28145990> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
- locked <0x28145990> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Browser Side Object Cleanup Thread" prio=6 tid=0x03428400 nid=0xe00 in Object.wait() [0x03a3f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28145a18> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x28145a18> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.plugin2.main.client.LiveConnectSupport$BrowserSideObjectCleanupThread.run(Unknown Source)

"TimerQueue" daemon prio=6 tid=0x03425800 nid=0xa84 waiting on condition [0x0373f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x28145aa0> (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)

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

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

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

"MemoryCache-DelayedCleanup" daemon prio=6 tid=0x0340e800 nid=0x75c waiting for monitor entry [0x0382f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.deploy.cache.MemoryCache.removeLoadedResource(Unknown Source)
- waiting to lock <0x2816a2d8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread$1.run(Unknown Source)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)

"AWT-EventQueue-1" prio=6 tid=0x033de000 nid=0x478 runnable [0x037de000]
   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$3.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$200(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)

"SysExecutionTheadCreator" daemon prio=6 tid=0x03380000 nid=0xaf8 in Object.wait() [0x036ef000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28145e08> (a sun.plugin.util.PluginSysUtil$SysExecutionThreadCreator)
at java.lang.Object.wait(Object.java:503)
at sun.plugin.util.PluginSysUtil$SysExecutionThreadCreator.run(Unknown Source)
- locked <0x28145e08> (a sun.plugin.util.PluginSysUtil$SysExecutionThreadCreator)

"AWT-EventQueue-0" prio=6 tid=0x0337dc00 nid=0x504 waiting on condition [0x0369f000]
   java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x28145ee0> (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.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-Windows" daemon prio=6 tid=0x0337b800 nid=0x530 runnable [0x00a9f000]
   java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)

"Java Plug-In Pipe Worker Thread (Client-Side)" daemon prio=6 tid=0x0337a400 nid=0xbcc runnable [0x0364f000]
   java.lang.Thread.State: RUNNABLE
at sun.plugin2.os.windows.Windows.ReadFile0(Native Method)
at sun.plugin2.os.windows.Windows.ReadFile(Unknown Source)
at sun.plugin2.ipc.windows.WindowsNamedPipe.read(Unknown Source)
at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.read(Unknown Source)
at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.readByte(Unknown Source)
at sun.plugin2.message.AbstractSerializer.readInt(Unknown Source)
at sun.plugin2.message.transport.SerializingTransport.read(Unknown Source)
at sun.plugin2.message.Pipe$WorkerThread.run(Unknown Source)

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

"Java2D Disposer" daemon prio=10 tid=0x03370c00 nid=0xf08 in Object.wait() [0x035af000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x281463a8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x281463a8> (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)

"Timer-0" prio=6 tid=0x03364400 nid=0x9b8 in Object.wait() [0x032cf000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28146440> (a java.util.TaskQueue)
at java.lang.Object.wait(Object.java:503)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked <0x28146440> (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)

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

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

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

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

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

"Finalizer" daemon prio=8 tid=0x00b22000 nid=0x27c waiting for monitor entry [0x02ecf000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
- waiting to lock <0x2816a2d8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
at com.sun.deploy.cache.CachedJarFile.isReferencedTo(Unknown Source)
at com.sun.deploy.cache.CachedJarFile.close(Unknown Source)
at java.util.zip.ZipFile.finalize(Unknown Source)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
at java.lang.ref.Finalizer.access$100(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

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

"main" prio=6 tid=0x0088b400 nid=0x274 in Object.wait() [0x0097f000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x28146758> (a sun.plugin2.message.Queue)
at sun.plugin2.message.Queue.waitForMessage(Unknown Source)
- locked <0x28146758> (a sun.plugin2.message.Queue)
at sun.plugin2.message.Pipe$1.run(Unknown Source)
at com.sun.deploy.util.Waiter$1.wait(Unknown Source)
at com.sun.deploy.util.Waiter.runAndWait(Unknown Source)
at sun.plugin2.message.Pipe.receive(Unknown Source)
at sun.plugin2.main.client.PluginMain.mainLoop(Unknown Source)
at sun.plugin2.main.client.PluginMain.run(Unknown Source)
at sun.plugin2.main.client.PluginMain.main(Unknown Source)

"VM Thread" prio=10 tid=0x00b1b400 nid=0xf90 runnable

"VM Periodic Task Thread" prio=10 tid=0x00b9c400 nid=0x904 waiting on condition

at sun.plugin2.message.Pipe$1.run(Unknown Source)
at com.sun.deploy.util.Waiter$1.wait(Unknown Source)
at com.sun.deploy.util.Waiter.runAndWait(Unknown Source)
at sun.plugin2.message.Pipe.receive(Unknown Source)
at sun.plugin2.main.client.PluginMain.mainLoop(Unknown Source)
at sun.plugin2.main.client.PluginMain.run(Unknown Source)
at sun.plugin2.main.client.PluginMain.main(Unknown Source)

"VM Thread" prio=10 tid=0x00b1b400 nid=0xf90 runnable

"VM Periodic Task Thread" prio=10 tid=0x00b9c400 nid=0x904 waiting on condition


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


REPRODUCIBILITY :
This bug can be reproduced often.

CUSTOMER SUBMITTED WORKAROUND :
We do not have a workaround at this time.
Comments
It's a duplicate of bug that Dmitry recently fixed.
18-11-2013