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

deadlock occurs in jsse when Socket and ServerSocket are created

XMLWordPrintable

      When a Socket in SSLSocketFactory and a ServerSocket in SSLServerSocketFactory are created at the same time, deadlock occurs.

      CONFIGURATION :
      SOlaris 9 (SMP) / JDK1.4.2_11

      REPRODUCE :
      1. unfold the attached deadlock-socket-jsse.zip
      2. modify directory path in run.sh
      3. invoke runs.csh

      When deadlock occurs, "lock:0" messege does not stop.
      -----
      java version "1.4.2_11"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_11-b06)
      Java HotSpot(TM) Client VM (build 1.4.2_11-b06, mixed mode)

      lock:0
      lock:0
      create...
      lock:0
      lock:0
      lock:0
      lock:0
      lock:0
      lock:0
      lock:0
      lock:0
      -----

      THREAD DUMP:

      Full thread dump Java HotSpot(TM) Client VM (1.4.2_10-b03 mixed mode):

      "Thread-10" prio=5 tid=0x0014b558 nid=0x13 in Object.wait() [f0f7e000..f0f7fc30]
              at com.sun.net.ssl.internal.ssl.CipherSuite.<clinit>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.CipherSuiteList.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.CipherSuiteList.f(DashoA12275)
              - locked <0xf5a37df0> (a java.lang.Class)
              at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket(DashoA12275)
              at SocketTest$ServerSockThread.run(SocketTest.java:48)

      "Thread-9" prio=5 tid=0x00147610 nid=0x12 in Object.wait() [f107f000..f107fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-8" prio=5 tid=0x00146b58 nid=0x11 in Object.wait() [f117f000..f117fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-7" prio=5 tid=0x001460a0 nid=0x10 in Object.wait() [f127f000..f127fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-6" prio=5 tid=0x001455e8 nid=0xf in Object.wait() [f137f000..f137fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-5" prio=5 tid=0x00144b98 nid=0xe in Object.wait() [f147f000..f147fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-4" prio=5 tid=0x001441f0 nid=0xd in Object.wait() [f157f000..f157fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-3" prio=5 tid=0x00142f08 nid=0xc in Object.wait() [f167f000..f167fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-2" prio=5 tid=0x00142450 nid=0xb in Object.wait() [f177e000..f177fc30]
              at com.sun.net.ssl.internal.ssl.SunJSSE_g.<clinit>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSessionImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSessionImpl.<clinit>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-1" prio=5 tid=0x00141998 nid=0xa in Object.wait() [f997f000..f997fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Thread-0" prio=5 tid=0x00141748 nid=0x9 in Object.wait() [f9a7f000..f9a7fc30]
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(DashoA12275)
              at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(DashoA12275)
              at SocketTest$ClientSockThread.run(SocketTest.java:69)

      "Signal Dispatcher" daemon prio=10 tid=0x000cfc20 nid=0x6 waiting on condition [0..0]

      "Finalizer" daemon prio=8 tid=0x000c8df8 nid=0x4 in Object.wait() [fc77f000..fc77fc30]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1800490> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
              - locked <0xf1800490> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
              at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

      "Reference Handler" daemon prio=10 tid=0x000c8370 nid=0x3 in Object.wait() [fe27f000..fe27fc30]
              at java.lang.Object.wait(Native Method)
              - waiting on <0xf1800380> (a java.lang.ref.Reference$Lock)
              at java.lang.Object.wait(Object.java:429)
              at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
              - locked <0xf1800380> (a java.lang.ref.Reference$Lock)

      "main" prio=5 tid=0x000372b8 nid=0x1 waiting on condition [ffbfe000..ffbfe4b4]
              at java.lang.Thread.sleep(Native Method)
              at SocketTest.<init>(SocketTest.java:26)
              at SocketTest.main(SocketTest.java:35)

      "VM Thread" prio=5 tid=0x000c7590 nid=0x2 runnable

      "VM Periodic Task Thread" prio=10 tid=0x000eb9e8 nid=0x8 waiting on condition
      "Suspend Checker Thread" prio=10 tid=0x000cf2e8 nid=0x5 runnable


      NOTE:
      If deadlock does not occur, the program will terminate with the following message.
      java version "1.4.2_11"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_11-b06)
      Java HotSpot(TM) Client VM (build 1.4.2_11-b06, mixed mode)

      lock:0
      lock:0
      create..
      accept..
      lock:1

            Unassigned Unassigned
            tbaba Tadayuki Baba (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: