JDK-6477348 : browser become non-responsive if we switch page during applet JAR initial download
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 5.0u11
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-10-02
  • Updated: 2014-02-27
  • Resolved: 2006-10-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0u11 b01Fixed
Related Reports
Relates :  
Description
problem only exists in 5.0, java 6 does not have this problem.

when we run an applet that requires downloading a large JAR file to start, if we switch to another page in the browser, the browser will become non-responsive until the JAR download is complete.

Comments
EVALUATION It was fixed in mustang with 5089064. The engineer who fixed the 5089064 said we should backport it into tiger, but no one did it.
12-10-2006

EVALUATION This hang is due to a deadlock between the main thread and the loader thread (Thread-4). The main thread is waiting to lock <0x214055b8> (a sun.plugin.security.PluginClassLoader) which is being held by the loader thread. I dug in to the code and sccs history a bit and I think I can conclude that the problem is caused by the fix for 4990841 in the plugin ClassLoaderInfo.java The problem isn't reproducible in mustang because part (or almost all) of the fix for 4990841 was removed by the fixes for 5023873 and 5089061. The piece of code in question is in ClassLoaderInfo.addZombie. The else part is giving us problem here. if (acl != null) { if (acl.getExceptionStatus()) { cli.clearLoaderRef(); } else { acl.clearAssertionStatus(); } }
03-10-2006

EVALUATION java thread dump when hang occur on windows with 5u10 Full thread dump Java HotSpot(TM) Client VM (1.5.0_10-b02 mixed mode, sharing): "Thread-4" prio=4 tid=0x05700008 nid=0xf50 runnable [0x0fb3e000..0x0fb3fd68] at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked <0x20c02278> (a java.io.BufferedInputStream) at sun.net.www.MeteredStream.read(Unknown Source) - locked <0x20c02298> (a sun.net.www.http.KeepAliveStream) at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unkn own Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked <0x20c022e0> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(Unknown Source) at java.io.PushbackInputStream.read(Unknown Source) at java.util.zip.InflaterInputStream.fill(Unknown Source) at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.ZipInputStream.read(Unknown Source) at sun.plugin.cache.CachedJarLoader.decompressWrite(Unknown Source) at sun.plugin.cache.CachedJarLoader.decompress(Unknown Source) at sun.plugin.cache.CachedJarLoader.access$500(Unknown Source) at sun.plugin.cache.CachedJarLoader$5.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin.cache.CachedJarLoader.download(Unknown Source) at sun.plugin.cache.CachedJarLoader.load(Unknown Source) at sun.plugin.cache.JarCache.get(Unknown Source) at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown So urce) at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source) at sun.misc.URLClassPath$JarLoader.getJarFile(Unknown Source) at sun.misc.URLClassPath$JarLoader.<init>(Unknown Source) at sun.misc.URLClassPath$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.misc.URLClassPath.getLoader(Unknown Source) at sun.misc.URLClassPath.getLoader(Unknown Source) - locked <0x214069b8> (a sun.misc.URLClassPath) at sun.misc.URLClassPath.getResource(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at sun.applet.AppletClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) - locked <0x214055b8> (a sun.plugin.security.PluginClassLoader) at sun.applet.AppletClassLoader.loadClass(Unknown Source) - locked <0x214055b8> (a sun.plugin.security.PluginClassLoader) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.applet.AppletClassLoader.loadCode(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "thread applet-AppletDemoTest1" prio=4 tid=0x05736458 nid=0xafc in Object.wait() [0x0f93f000..0x0f93fa68] at java.lang.Object.wait(Native Method) - waiting on <0x20c001a0> (a java.lang.Thread) at java.lang.Thread.join(Unknown Source) - locked <0x20c001a0> (a java.lang.Thread) at java.lang.Thread.join(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "TimerQueue" daemon prio=6 tid=0x0572c998 nid=0xfc8 in Object.wait() [0x0e3bf000 ..0x0e3bfbe8] at java.lang.Object.wait(Native Method) - waiting on <0x213f49e8> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x213f49e8> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x0571c110 nid=0x714 in Object.wait() [0x0620f000. .0x0620fc68] at java.lang.Object.wait(Native Method) - waiting on <0x212ffe28> (a java.awt.EventQueue) at java.lang.Object.wait(Unknown Source) at java.awt.EventQueue.getNextEvent(Unknown Source) - locked <0x212ffe28> (a java.awt.EventQueue) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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) "ConsoleWriterThread" daemon prio=6 tid=0x056cb5f0 nid=0x8e0 in Object.wait() [0 x0610f000..0x0610fce8] at java.lang.Object.wait(Native Method) - waiting on <0x2135f308> (a java.lang.Object) at java.lang.Object.wait(Unknown Source) at com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(Unkn own Source) - locked <0x2135f308> (a java.lang.Object) "AWT-EventQueue-1" prio=6 tid=0x056b49c0 nid=0x36c in Object.wait() [0x05f8f000. .0x05f8fd68] at java.lang.Object.wait(Native Method) - waiting on <0x2134d020> (a java.awt.EventQueue) at java.lang.Object.wait(Unknown Source) at java.awt.EventQueue.getNextEvent(Unknown Source) - locked <0x2134d020> (a java.awt.EventQueue) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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) "traceMsgQueueThread" daemon prio=6 tid=0x02defe18 nid=0x5ac in Object.wait() [0 x05d8f000..0x05d8fa68] at java.lang.Object.wait(Native Method) - waiting on <0x21311268> (a java.util.ArrayList) at java.lang.Object.wait(Unknown Source) at com.sun.deploy.util.Trace$TraceMsgQueueChecker.run(Unknown Source) - locked <0x21311268> (a java.util.ArrayList) at java.lang.Thread.run(Unknown Source) "AWT-Windows" daemon prio=6 tid=0x056a13f8 nid=0xe60 runnable [0x05b7f000..0x05b 7fae8] at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x056a0fd8 nid=0xb44 in Object.wait() [0x05a7f000..0x0 5a7fb68] at java.lang.Object.wait(Native Method) - waiting on <0x21310f58> (a java.lang.Object) at java.lang.Object.wait(Unknown Source) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x21310f58> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x0569fb80 nid=0x2c8 in Object.wait() [0x05 97f000..0x0597fbe8] at java.lang.Object.wait(Native Method) - waiting on <0x21310fe0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x21310fe0> (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) "Low Memory Detector" daemon prio=6 tid=0x02da3c90 nid=0xd10 runnable [0x0000000 0..0x00000000] "CompilerThread0" daemon prio=10 tid=0x02da2910 nid=0x6b0 waiting on condition [ 0x00000000..0x0546f6c8] "Signal Dispatcher" daemon prio=10 tid=0x02da1c88 nid=0x9c4 waiting on condition [0x00000000..0x00000000] "Finalizer" daemon prio=8 tid=0x02d70dd0 nid=0xf9c in Object.wait() [0x0526f000. .0x0526fa68] at java.lang.Object.wait(Native Method) - waiting on <0x21311188> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x21311188> (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=0x02d6f950 nid=0x754 in Object.wait() [0x 0516f000..0x0516fae8] at java.lang.Object.wait(Native Method) - waiting on <0x21310df0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Unknown Source) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x21310df0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x02cf1760 nid=0x4f0 waiting for monitor entry [0x0013e000..0x 0013e5e4] at java.lang.ClassLoader.clearAssertionStatus(Unknown Source) - waiting to lock <0x214055b8> (a sun.plugin.security.PluginClassLoader) at sun.plugin.ClassLoaderInfo.addZombie(Unknown Source) - locked <0x26cd7d40> (a java.lang.Class) at sun.plugin.ClassLoaderInfo.removeReference(Unknown Source) - locked <0x21406c20> (a sun.plugin.ClassLoaderInfo) at sun.plugin.AppletViewer.appletDestroy(Unknown Source) at sun.plugin.AppletViewer.appletDestroy(Unknown Source) at sun.plugin.viewer.LifeCycleManager.destroyAppletPanel(Unknown Source) at sun.plugin.viewer.IExplorerPluginObject.destroyPlugin(Unknown Source) "VM Thread" prio=10 tid=0x02d6cf98 nid=0xc28 runnable "VM Periodic Task Thread" prio=10 tid=0x02da4ee8 nid=0xe3c waiting on condition
02-10-2006