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

Certificate prompt totally lock up when a webstart apps connect via SSL

XMLWordPrintable

      J2SE Version (please include all output from java -version flag):

      java version "1.6.0_12"
      Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
      Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)

      Does this problem occur on J2SE 1.4.x or 5.0.x ? Yes / No (pick one)
      No, works fine with JDK 6

      Operating System Configuration Information (be specific):
      Windows Vista Business SP1

      Hardware Configuration Information (be specific):
      HP Pavillion dv9000
      Windows Vista Business SP1 32 bit
      3 GB RAM
      Intel Core 2 Duo T9300



      Bug Description:
      Complete show stopper. My application starts and tries to create an SSL connection. The certificate is self signed. It gets to the point where a dialog comes up so I can accept the self-signed certificate and I cannot select anything on that dialog. The application is completly locked up. I can even scroll around in the Java console. My only option is to end the process from the TaskManager.



      Steps to Reproduce (be specific):

      Here is some information I took from jconsole. The Javaws Secure Thread is in an Invoke and Wait

      Note the total blocked and total wait counts


      -------- JConsole Thread Dumps ------------

      Name: Reference Handler
      State: WAITING on java.lang.ref.Reference$Lock@d1afd3
      Total blocked: 54 Total waited: 55

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

      Name: Finalizer
      State: WAITING on java.lang.ref.ReferenceQueue$Lock@1e88c7f
      Total blocked: 46 Total waited: 46

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

      Name: Signal Dispatcher
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:

      Name: Attach Listener
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:

      Name: Java2D Disposer
      State: WAITING on java.lang.ref.ReferenceQueue$Lock@18771dc
      Total blocked: 6 Total waited: 7

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      sun.java2d.Disposer.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: AWT-Windows
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:
      sun.awt.windows.WToolkit.eventLoop(Native Method)
      sun.awt.windows.WToolkit.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: Javaws Secure Thread
      State: WAITING on java.awt.EventQueue$1AWTInvocationLock@f34071
      Total blocked: 5 Total waited: 5

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      java.awt.EventQueue.invokeAndWait(Unknown Source)
      javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
      com.sun.deploy.ui.DialogTemplate.setVisible(Unknown Source)
      com.sun.deploy.ui.UIFactory$1.execute(Unknown Source)
      com.sun.javaws.ui.JavawsSysRun$SecureThread.doWork(Unknown Source)
      com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
         - locked java.lang.Object@edd9de

      Name: DestroyJavaVM
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:

      Name: traceMsgQueueThread
      State: WAITING on java.util.ArrayList@15cd9a
      Total blocked: 17 Total waited: 19

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      com.sun.deploy.util.Trace$TraceMsgQueueChecker.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: ConsoleWriterThread
      State: WAITING on java.lang.Object@86b376
      Total blocked: 11 Total waited: 17

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source)

      Name: CacheMemoryCleanUpThread
      State: WAITING on java.lang.ref.ReferenceQueue$Lock@ba5a81
      Total blocked: 17 Total waited: 18

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

      Name: CacheCleanUpThread
      State: WAITING on com.sun.deploy.cache.CleanupThread@825cf3
      Total blocked: 15 Total waited: 16

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      com.sun.deploy.cache.CleanupThread.run(Unknown Source)

      Name: TimerQueue
      State: TIMED_WAITING on javax.swing.TimerQueue@7a4076
      Total blocked: 1 Total waited: 19,703

      Stack trace:
      java.lang.Object.wait(Native Method)
      javax.swing.TimerQueue.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: AWT-Shutdown
      State: WAITING on java.lang.Object@4391f0
      Total blocked: 6 Total waited: 7

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      sun.awt.AWTAutoShutdown.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: AWT-EventQueue-1
      State: WAITING on java.awt.EventQueue@c1e4d5
      Total blocked: 168 Total waited: 168

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      java.awt.EventQueue.getNextEvent(Unknown Source)
      java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      java.awt.SequencedEvent.dispatch(Unknown Source)
      java.awt.EventQueue.dispatchEvent(Unknown Source)
      java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      java.awt.Dialog$1.run(Unknown Source)
      java.awt.Dialog$3.run(Unknown Source)
      java.security.AccessController.doPrivileged(Native Method)
      java.awt.Dialog.show(Unknown Source)
      java.awt.Component.show(Unknown Source)
      java.awt.Component.setVisible(Unknown Source)
      java.awt.Window.setVisible(Unknown Source)
      java.awt.Dialog.setVisible(Unknown Source)
      com.sun.deploy.ui.DialogTemplate$10.run(Unknown Source)
      java.awt.event.InvocationEvent.dispatch(Unknown Source)
      java.awt.EventQueue.dispatchEvent(Unknown Source)
      java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      java.awt.EventDispatchThread.run(Unknown Source)

      Name: D3D Screen Updater
      State: TIMED_WAITING on java.lang.Object@12eabae
      Total blocked: 60 Total waited: 3,519

      Stack trace:
      java.lang.Object.wait(Native Method)
      sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: AWT-EventQueue-0
      State: WAITING on java.awt.MediaTracker@c6b80e
      Total blocked: 51 Total waited: 50

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.awt.MediaTracker.waitForID(Unknown Source)
      javax.swing.ImageIcon.loadImage(Unknown Source)
      javax.swing.ImageIcon.<init>(Unknown Source)
      javax.swing.ImageIcon.<init>(Unknown Source)
      dsi.client.module.login.LoginPanel.comboBoxEventOccurred(LoginPanel.java:348)
      dsi.client.awt.DComboBox.fireDComboBoxEvent(DComboBox.java:277)
      dsi.client.awt.DComboBox$InternalListener.fireSelectionChanged(DComboBox.java:373)
      dsi.client.awt.DComboBox$InternalListener.contentsChanged(DComboBox.java:344)
      javax.swing.AbstractListModel.fireContentsChanged(Unknown Source)
      dsi.client.awt.ModelFactory$DComboBoxModelImpl.setSelectedItem(ModelFactory.java:47)
      javax.swing.JComboBox.setSelectedItem(Unknown Source)
      dsi.client.awt.DComboBox.setSelectedItem(DComboBox.java:233)
      dsi.client.module.login.LoginPanel.<init>(LoginPanel.java:106)
      dsi.client.module.login.SplashFrame2.initializationComplete(SplashFrame2.java:247)
      dsi.client.module.StartupInitializer$1.run(StartupInitializer.java:106)
      java.awt.event.InvocationEvent.dispatch(Unknown Source)
      java.awt.EventQueue.dispatchEvent(Unknown Source)
      java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      java.awt.EventDispatchThread.run(Unknown Source)

      Name: Thread-78
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:
      java.net.PlainSocketImpl.socketAccept(Native Method)
      java.net.PlainSocketImpl.accept(Unknown Source)
         - locked java.net.SocksSocketImpl@17ed710
      java.net.ServerSocket.implAccept(Unknown Source)
      java.net.ServerSocket.accept(Unknown Source)
      com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer$2.run(Unknown Source)
      java.security.AccessController.doPrivileged(Native Method)
      com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer.run(Unknown Source)

      Name: TimerQueue
      State: WAITING on javax.swing.TimerQueue@176eeb9
      Total blocked: 3 Total waited: 11

      Stack trace:
      java.lang.Object.wait(Native Method)
      javax.swing.TimerQueue.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: MultiThreadedHttpConnectionManager cleanup
      State: TIMED_WAITING on java.lang.ref.ReferenceQueue$Lock@c5da6
      Total blocked: 0 Total waited: 360

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.ref.ReferenceQueue.remove(Unknown Source)
      org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(Unknown Source)

      Name: Image Fetcher 0
      State: WAITING on java.lang.Object@edd9de owned by: Javaws Secure Thread
      Total blocked: 5 Total waited: 5

      Stack trace:
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      com.sun.javaws.ui.JavawsSysRun.delegate(Unknown Source)
      com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
      com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
      java.security.AccessController.doPrivileged(Native Method)
      com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
      com.sun.deploy.ui.UIFactory.showSecurityDialog(Unknown Source)
      com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source)
      com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source)
      com.sun.deploy.security.X509ExtendedDeployTrustManager.checkServerTrusted(Unknown Source)
         - locked com.sun.deploy.security.X509ExtendedDeployTrustManager@16ff9e0
      com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
      com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
      com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
      com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
      com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
         - locked com.sun.net.ssl.internal.ssl.SSLSocketImpl@1ac8b37
         - locked java.lang.Object@39471b
      com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
         - locked java.lang.Object@1284903
      com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
      com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
      sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
      sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
      sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
         - locked www.protocol.https.DelegateHttpsURLConnection@c1dc0b'>sun.net.www.protocol.https.DelegateHttpsURLConnection@c1dc0b
      sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
         - locked www.protocol.https.HttpsURLConnectionImpl@db4c8d'>sun.net.www.protocol.https.HttpsURLConnectionImpl@db4c8d
      sun.awt.image.URLImageSource.getDecoder(Unknown Source)
      sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
      sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
      sun.awt.image.ImageFetcher.run(Unknown Source)

      Name: RMI TCP Accept-0
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:
      java.net.PlainSocketImpl.socketAccept(Native Method)
      java.net.PlainSocketImpl.accept(Unknown Source)
         - locked java.net.SocksSocketImpl@b7cee4
      java.net.ServerSocket.implAccept(Unknown Source)
      java.net.ServerSocket.accept(Unknown Source)
      sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: RMI TCP Connection(1)-192.9.201.25
      State: TIMED_WAITING on com.sun.jmx.remote.internal.ArrayNotificationBuffer@191f022
      Total blocked: 0 Total waited: 5

      Stack trace:
      java.lang.Object.wait(Native Method)
      com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications(Unknown Source)
      com.sun.jmx.remote.internal.ArrayNotificationBuffer$ShareBuffer.fetchNotifications(Unknown Source)
      com.sun.jmx.remote.internal.ServerNotifForwarder.fetchNotifs(Unknown Source)
      javax.management.remote.rmi.RMIConnectionImpl$2.run(Unknown Source)
      javax.management.remote.rmi.RMIConnectionImpl$2.run(Unknown Source)
      javax.management.remote.rmi.RMIConnectionImpl.fetchNotifications(Unknown Source)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      java.lang.reflect.Method.invoke(Unknown Source)
      sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
      sun.rmi.transport.Transport$1.run(Unknown Source)
      java.security.AccessController.doPrivileged(Native Method)
      sun.rmi.transport.Transport.serviceCall(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: RMI Scheduler(0)
      State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@1e2f6b0
      Total blocked: 0 Total waited: 1

      Stack trace:
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
      java.util.concurrent.DelayQueue.take(Unknown Source)
      java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
      java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: JMX server connection timeout 126
      State: TIMED_WAITING on [I@1b5eba4
      Total blocked: 11 Total waited: 12

      Stack trace:
      java.lang.Object.wait(Native Method)
      com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: RMI TCP Connection(2)-192.9.201.25
      State: RUNNABLE
      Total blocked: 0 Total waited: 0

      Stack trace:
      java.net.SocketInputStream.socketRead0(Native Method)
      java.net.SocketInputStream.read(Unknown Source)
      java.io.BufferedInputStream.fill(Unknown Source)
      java.io.BufferedInputStream.read(Unknown Source)
         - locked java.io.BufferedInputStream@149959a
      java.io.FilterInputStream.read(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      java.lang.Thread.run(Unknown Source)

      Name: RMI TCP Connection(4)-192.9.201.25
      State: RUNNABLE
      Total blocked: 1 Total waited: 0

      Stack trace:
      java.net.SocketInputStream.socketRead0(Native Method)
      java.net.SocketInputStream.read(Unknown Source)
      java.io.BufferedInputStream.fill(Unknown Source)
      java.io.BufferedInputStream.read(Unknown Source)
         - locked java.io.BufferedInputStream@6489f0
      java.io.FilterInputStream.read(Unknown Source)
      sun.rmi.transport.tcp.TCPTransport.han
      More information forwarded by the CAP member:

      The problem was from (and this is in the stack from the original description) here:
      java.lang.Object.wait(Native Method)
      java.awt.MediaTracker.waitForID(Unknown Source)
      javax.swing.ImageIcon.loadImage(Unknown Source)
      javax.swing.ImageIcon.<init>(Unknown Source)
      javax.swing.ImageIcon.<init>(Unknown Source)
      dsi.client.module.login.LoginPanel.comboBoxEventOccurred(LoginPanel.java:348)
       
      This looks benign enough, but because of a setup issue, this image was being loaded from a different server (with a self-signed certificate). I think it was this that brought up the dialog that locked up the system. I have replicated an XP box running 1.6.0_04. I don't know if there is a race condition here that makes it a bit random. It seems, though, that once it happens, it will never work again. (Changing the Image to be on the same server...with the certificate that was already accepted works, however.)
       
      EventQueue 0 is waiting on Javaws Secure Thread
      Image Fetcher 0 is waiting on Javaws Secure Thread
      Javaws Secure Thread is waiting on something from an EventQueue
      EventQueue 1 is waiting on something, maybe an AWT event

            ngthomas Thomas Ng (Inactive)
            tyao Ting-Yun Ingrid Yao (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: