FULL PRODUCT VERSION : java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows XP [Version 5.1.2600] EXTRA RELEVANT SYSTEM CONFIGURATION : Java Console is set to show. JNLP application is not in cache. There are no stored security certificates. A DESCRIPTION OF THE PROBLEM : I have a Java application that requires all permissions. When starting for the first time with Java console enabled, a deadlock occurs involving the classloader and AWT locks. This is a simplified version of the JNLP: <jnlp spec="6.0+" href="http://..." codebase="http://..."> <information> ... <update check="always" policy="always"/> </information> <security> <all-permissions/> </security> <resources> <java version="1.6+"/> <jar href="customprogress.jar" version="1.0" download="progress" /> <jar href="lazy1.jar" download='lazy'/> <jar href="lazy2.jar" download='lazy'/> ... <jar href="non-lazy1.jar" /> <jar href="non-lazy2.jar" /> .... <property .../> </resources> <application-desc main-class="my.MainClass" progress-class="my.NoOpProgress"/> </jnlp> STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : 1 - enable Java console to show (not sure if it is on by default) 2 - launch application, it freezes right away. To be completely honest, I am skipping javaws and running straight from the javaws.jar and deploy.jar: java -Xbootclasspath/a:/home/user/jdk1.6.0_20/jre/lib/deploy.jar -Xbootclasspath/a:/home/user/jdk1.6.0_20/jre/lib/javaws.jar -Ddeployment.javapi.cache.enabled=true com.sun.javaws.Main -Xnosplash http://myserver/myapp.jnlp ACTUAL - Found one Java-level deadlock: ============================= "Thread-2": waiting to lock monitor 0x170fe894 (object 0x07f4f580, a java.awt.Component$AW TTreeLock), which is held by "AWT-EventQueue-1" "AWT-EventQueue-1": waiting to lock monitor 0x17194eec (object 0x07f43c50, a com.sun.jnlp.JNLPClas sLoader), which is held by "Thread-2" Java stack information for the threads listed above: =================================================== "Thread-2": at java.awt.Container.addImpl(Unknown Source) - waiting to lock <0x07f4f580> (a java.awt.Component$AWTTreeLock) at java.awt.Container.add(Unknown Source) at com.sun.deploy.ui.DialogTemplate.createTopPanel(Unknown Source) at com.sun.deploy.ui.DialogTemplate.setSecurityContent(Unknown Source) at com.sun.deploy.ui.UIFactory$1.execute(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.showSecurityDialog(Unknown Source) at com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source) at com.sun.deploy.security.X509Util.showSecurityDialog(Unknown Source) at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown S ource) at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Sou rce) at com.sun.javaws.security.AppPolicy.addPermissions(Unknown Source) at com.sun.jnlp.JNLPClassLoader.getTrustedCodeSources(Unknown Source) at com.sun.deploy.security.CPCallbackHandler$ParentCallback.strategy(Unk nown Source) at com.sun.deploy.security.CPCallbackHandler$ParentCallback.openClassPat hElement(Unknown Source) - locked <0x07f851a8> (a com.sun.deploy.security.CPCallbackHandler$Paren tCallback) at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unkno wn Source) at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$700(Unkno wn Source) at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown So urce) at java.security.AccessController.doPrivileged(Native Method) at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unkno wn Source) at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown S ource) 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 <0x07f59db0> (a com.sun.deploy.security.DeployURLClassPath) at com.sun.deploy.security.DeployURLClassPath.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 com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) - locked <0x07f438d0> (a com.sun.jnlp.JNLPClassLoader) at java.lang.ClassLoader.loadClass(Unknown Source) - locked <0x07f43c50> (a com.sun.jnlp.JNLPClassLoader) at java.lang.ClassLoader.loadClass(Unknown Source) at com.sun.javaws.Launcher$2.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-1": at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at sun.awt.FontConfiguration$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.FontConfiguration.getFontCharsetEncoder(Unknown Source) at sun.awt.FontConfiguration.buildFontDescriptors(Unknown Source) at sun.awt.FontConfiguration.getFontDescriptors(Unknown Source) at sun.awt.FontConfiguration.getFontDescriptors(Unknown Source) at sun.awt.PlatformFont.<init>(Unknown Source) at sun.awt.windows.WFontPeer.<init>(Unknown Source) at sun.awt.windows.WToolkit.getFontPeer(Unknown Source) at java.awt.Font.getPeer_NoClientCode(Unknown Source) at java.awt.Font.getPeer(Unknown Source) at sun.awt.windows.WComponentPeer._setFont(Native Method) - locked <0x02e00038> (a sun.awt.windows.WFramePeer) at sun.awt.windows.WComponentPeer.setFont(Unknown Source) - locked <0x02e00038> (a sun.awt.windows.WFramePeer) at sun.awt.windows.WWindowPeer.initialize(Unknown Source) at sun.awt.windows.WFramePeer.initialize(Unknown Source) at sun.awt.windows.WComponentPeer.<init>(Unknown Source) at sun.awt.windows.WCanvasPeer.<init>(Unknown Source) at sun.awt.windows.WPanelPeer.<init>(Unknown Source) at sun.awt.windows.WWindowPeer.<init>(Unknown Source) at sun.awt.windows.WFramePeer.<init>(Unknown Source) at sun.awt.windows.WToolkit.createFrame(Unknown Source) at java.awt.Frame.addNotify(Unknown Source) - locked <0x07f4f580> (a java.awt.Component$AWTTreeLock) at java.awt.Window.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 com.sun.deploy.util.ConsoleWindow.showConsole(Unknown Source) Pause reading child output to share cycles. at com.sun.javaws.util.JavawsConsoleController.showConsoleIfEnable(Unkno wn Source) at com.sun.javaws.Launcher$1.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(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) Found 1 deadlock. REPRODUCIBILITY : This bug can be reproduced always. CUSTOMER SUBMITTED WORKAROUND : Ensure the Java console is disabled before trying to start the application.