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

Java Library deadlock -- in the CORBA-API

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P3 P3
    • None
    • 7u10
    • other-libs
    • other

      FULL PRODUCT VERSION :
      java version " 1.7.0_10 "
      Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
      Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)


      ADDITIONAL OS VERSION INFORMATION :
      Linux ubuntu 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      just a plain and simple desk-top, running ubuntu.

      A DESCRIPTION OF THE PROBLEM :
      A simple program with two therads deadlocks the JVM. !!

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      ceems@ubuntu:~/phd-new/thesis/last-minus/oopsla/oopsla$ /usr/local/share/jdk1.7.0_10/bin/jdb CorbaEDeadlock
      Initializing jdb ...
      > stop in com.sun.org.omg.CORBA.OperationDescriptionHelper.type
      Deferring breakpoint com.sun.org.omg.CORBA.OperationDescriptionHelper.type.
      It will be set after the class is loaded.
      > stop in com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type
      Deferring breakpoint com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type.
      It will be set after the class is loaded.
      > run
      run CorbaEDeadlock
      Set uncaught java.lang.Throwable
      Set deferred uncaught java.lang.Throwable
      >
      VM Started: Set deferred breakpoint com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type

      Breakpoint hit: " thread=Thread-0 " , com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type(), line=60 bci=0

      Thread-0[1] threads
      Group system:
        (java.lang.ref.Reference$ReferenceHandler)0x150 Reference Handler cond. waiting
        (java.lang.ref.Finalizer$FinalizerThread)0x14f Finalizer cond. waiting
        (java.lang.Thread)0x14e Signal Dispatcher running
      Group main:
        (CorbaEDeadlock$1)0x176 Thread-0 running (at breakpoint)
        (CorbaEDeadlock$2)0x178 Thread-1 running
        (java.lang.Thread)0x177 DestroyJavaVM running
      Thread-0[1] suspend 0x176
      Thread-0[1] cont
      > Set deferred breakpoint com.sun.org.omg.CORBA.OperationDescriptionHelper.type

      Breakpoint hit: " thread=Thread-1 " , com.sun.org.omg.CORBA.OperationDescriptionHelper.type(), line=60 bci=0

      Thread-1[1] threadlocks
      Monitor information for thread Thread-1:
        Owned monitor: instance of java.lang.Class(reflected class=com.sun.org.omg.CORBA.OperationDescriptionHelper, id=380)
        Not waiting for a monitor
      Thread-1[1] threads
      Group system:
        (java.lang.ref.Reference$ReferenceHandler)0x150 Reference Handler cond. waiting
        (java.lang.ref.Finalizer$FinalizerThread)0x14f Finalizer cond. waiting
        (java.lang.Thread)0x14e Signal Dispatcher running
      Group main:
        (CorbaEDeadlock$1)0x176 Thread-0 running (at breakpoint)
        (CorbaEDeadlock$2)0x178 Thread-1 running (at breakpoint)
        (java.lang.Thread)0x177 DestroyJavaVM running
      Thread-1[1] resume 0x176
      Thread-1[1] cont
      > ^\2013-03-22 21:29:15
      Full thread dump Java HotSpot(TM) Server VM (23.6-b04 mixed mode):
      [...]
      Found one Java-level deadlock:
      =============================
       " Thread-1 " :
        waiting to lock monitor 0x08ed0b68 (object 0xa4976aa8, a java.lang.Class),
        which is held by " Thread-0 "
       " Thread-0 " :
        waiting to lock monitor 0x08ecff4c (object 0xa49f0638, a java.lang.Class),
        which is held by " Thread-1 "

      Java stack information for the threads listed above:
      ===================================================
       " Thread-1 " :
      at com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type(ExceptionDescriptionHelper.java:60)
      - waiting to lock <0xa4976aa8> (a java.lang.Class for com.sun.org.omg.CORBA.ExceptionDescriptionHelper)
      at com.sun.org.omg.CORBA.OperationDescriptionHelper.type(OperationDescriptionHelper.java:123)
      - locked <0xa49f0638> (a java.lang.Class for org.omg.CORBA.TypeCode)
      - locked <0xa49f04c8> (a java.lang.Class for com.sun.org.omg.CORBA.OperationDescriptionHelper)
      at CorbaEDeadlock$2.run(CorbaEDeadlock.java:7)
       " Thread-0 " :
      at com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type(ExceptionDescriptionHelper.java:64)
      - waiting to lock <0xa49f0638> (a java.lang.Class for org.omg.CORBA.TypeCode)
      - locked <0xa4976aa8> (a java.lang.Class for com.sun.org.omg.CORBA.ExceptionDescriptionHelper)
      at CorbaEDeadlock$1.run(CorbaEDeadlock.java:4)

      Found 1 deadlock.

      [...]

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The underlying JVM ought not to dweadlock
      ACTUAL -
      As demonstrated using jdb the program always deadlocks


      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Deadlocked stack.

      REPRODUCIBILITY :
      This bug can be reproduced often.

      ---------- BEGIN SOURCE ----------
      ceems@ubuntu:~/phd-new/thesis/last-minus/deadlocks$ cat CorbaEDeadlock.java
      /*<Cycle-2 locks= " org.omg.CORBA.TypeCode.class com.sun.org.omg.CORBA.ExceptionDescriptionHelper.class " >
      <Thread-1>
      <com.sun.org.omg.CORBA.OperationDescriptionHelper.class>com.sun.org.omg.CORBA.OperationDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;
      <org.omg.CORBA.TypeCode.class>com.sun.org.omg.CORBA.OperationDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;#Lorg/omg/CORBA/TypeCode.class;#0=VarientOf=com.sun.org.omg.CORBA.OperationDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;
      com.sun.org.omg.CORBA.ExceptionDescriptionHelper.class
      <com.sun.org.omg.CORBA.ExceptionDescriptionHelper.class>com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;
      </Thread-1>
      <Thread-2>
      com.sun.org.omg.CORBA.ExceptionDescriptionHelper.insert:(Lorg/omg/CORBA/Any;Lcom/sun/org/omg/CORBA/ExceptionDescription;)V
      <com.sun.org.omg.CORBA.ExceptionDescriptionHelper.class>com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;
      org.omg.CORBA.TypeCode.class
      <org.omg.CORBA.TypeCode.class>com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;#Lorg/omg/CORBA/TypeCode.class;#0=VarientOf=com.sun.org.omg.CORBA.ExceptionDescriptionHelper.type:()Lorg/omg/CORBA/TypeCode;
       *</Thread-2>
       *</Cycle-2>
       */
      public class CorbaEDeadlock {
       public static void main(String[] args) {
        new Thread() {
         public void run() { (new com.sun.org.omg.CORBA.ExceptionDescriptionHelper()).type(); };
        }.start();
        new Thread() {
         public void run() { (new com.sun.org.omg.CORBA.OperationDescriptionHelper()).type(); };
        }.start();
       }
      }

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      No work around

            msheppar Mark Sheppard
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: