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

Application that extends a protected inner class SEGVs on 1.2beta3

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P1 P1
    • None
    • 1.2.0
    • tools
    • None
    • unknown
    • solaris_2.5.1

      In the following example an inner class, "ProtectedInnerClass2" extends
      a protected inner class defined by an outer class in another package. In JDK1.1.5 this caused a compiler error (see bug 4085837) which was thought to
      have been fixed in 1.1.6. In 1.1.6 a runtime "class not found" error is
      generated, on 1.2 beta3, java SEGVs. Here's the application and the transcripts
      of runs against 1.2 and 1.1.6.

      // File InnerClassBug1.java

      package p1;

      public class InnerClassBug1 {
          protected class BaseInnerClass {
      public String getWorld() { return "World"; }
          }
      }


      // File InnerClassBug2.java

      package p2;

      public class InnerClassBug2 extends p1.InnerClassBug1
      {
          class ExtendedInnerClass extends BaseInnerClass {
      String getHelloWorld() { return "Hello " + getWorld(); }
          }

          ExtendedInnerClass eicObject = new ExtendedInnerClass();

          public static void main(String[] args) {
      System.out.println(new InnerClassBug2().eicObject.getHelloWorld());
          }
      }

      mushmouth% which java
      /usr/local/java/jdk1.2beta3/solaris/bin/java
      mushmouth% echo $CLASSPATH
      .:/usr/local/java/jdk1.2beta3/solaris/lib/classes.zip
      mushmouth% javac InnerClassBug1.java InnerClassBug2.java
      mushmouth% java -classpath ${CLASSPATH} p2.InnerClassBug2
      SIGSEGV 11* segmentation violation
          si_signo [11]: SIGSEGV 11* segmentation violation
          si_errno [0]: Error 0
          si_code [1]: SEGV_MAPERR [addr: 0x0]

      stackbase=F0000000, stackpointer=EFFFE248

      Full thread dump:
          "SoftReference sweeper" (TID:0xee3046a8, sys_thread_t:0x81fd8, state:CW) prio=9
      at java.lang.Object.wait(Native Method)
      at java.lang.Object.wait(Object.java:315)
      at java.lang.Runtime.waitForMemoryAdvice(Runtime.java:569)
      at java.lang.ref.SoftReference$Sweeper.run(SoftReference.java:524)
      at java.lang.Thread.run(Thread.java:490)
          "Finalizer" (TID:0xee300318, sys_thread_t:0x60db0, state:CW) prio=8
      at java.lang.Object.wait(Native Method)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:107)
      at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:122)
      at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:127)
          "Reference handler" (TID:0xee3003c8, sys_thread_t:0x59868, state:CW) prio=10
      at java.lang.Object.wait(Native Method)
      at java.lang.Object.wait(Object.java:315)
      at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:186)
          "Async Garbage Collector" (TID:0xee3001b0, sys_thread_t:0x5a400, state:R) prio=1
          "Idle thread" (TID:0xee3001f8, sys_thread_t:0x5a2d8, state:R) prio=0
          "Clock" (TID:0xee3002d0, sys_thread_t:0x53108, state:CW) prio=12
          "main" (TID:0xee300038, sys_thread_t:0x22cf0, state:R) prio=5 *current thread*
      at p2.InnerClassBug2.<init>(InnerClassBug2.java:9)
      at p2.InnerClassBug2.main(InnerClassBug2.java:12)
      Monitor Cache Dump:
      Registered Monitor Dump:
          utf8 hash table: <unowned>
          JNI pinning lock: <unowned>
          JNI global reference lock: <unowned>
          BinClass lock: <unowned>
          Class linking lockAbort (core dumped)
      mushmouth%

      -------------

      mushmouth% setenv CLASSPATH .:/usr/local/java/jdk1.1.6/solaris/lib/classes.zip
      mushmouth% which java
      /usr/local/java/jdk1.1.6/solaris/bin/java
      mushmouth% javac -d /home/hmuller/awt-bugs InnerClassBug1.java InnerClassBug2.java
      mushmouth% java -classpath ${CLASSPATH} p2.InnerClassBug2
      java.lang.NoClassDefFoundError: p1/InnerClassBug1$BaseInnerClass
      at p2.InnerClassBug2.<init>(InnerClassBug2.java:3)
      at p2.InnerClassBug2.main(InnerClassBug2.java:12)
      mushmouth%

            wmaddoxsunw William Maddox (Inactive)
            sswingtrsunw Swingtraq Swingtraq (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: