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

Compiling against this corrupt class file causes a stacktrace from javac

    XMLWordPrintable

Details

    • b08
    • x86
    • windows_xp
    • Verified

    Description

      FULL PRODUCT VERSION :
      javac 1.6.0_11

      java version "1.6.0_15"
      Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
      Java HotSpot(TM) Client VM (build 14.1-b02, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows XP [Version 1.5.2600]

      A DESCRIPTION OF THE PROBLEM :
      I created a class file by hand and tried to compile a java file that references it. javac crashed and gave me a stack trace.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      the following command on the files mentioned later

      javac EmptyCall.java

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      a class verification error telling me that my binary .class file was corrupt
      ACTUAL -
      javac crashed and gave me a stack trace

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      An exception has occurred in the compiler (1.6.0_11). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.ArrayIndexOutOfBoundsException: 1091
              at com.sun.tools.javac.jvm.ClassReader.readPool(ClassReader.java:386)
              at com.sun.tools.javac.jvm.ClassReader.readClassSymbol(ClassReader.java:475)
              at com.sun.tools.javac.jvm.ClassReader.readClass(ClassReader.java:1545)
              at com.sun.tools.javac.jvm.ClassReader.readClassFile(ClassReader.java:1658)
              at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1845)
              at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1777)
              at com.sun.tools.javac.code.Symbol.complete(Symbol.java:386)
              at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:758)
              at com.sun.tools.javac.jvm.ClassReader.loadClass(ClassReader.java:1951)
              at com.sun.tools.javac.comp.Resolve.loadClass(Resolve.java:842)
              at com.sun.tools.javac.comp.Resolve.findGlobalType(Resolve.java:901)
              at com.sun.tools.javac.comp.Resolve.findType(Resolve.java:957)
              at com.sun.tools.javac.comp.Resolve.findIdent(Resolve.java:986)
              at com.sun.tools.javac.comp.Resolve.resolveIdent(Resolve.java:1162)
              at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:1714)
              at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:1547)
              at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
              at com.sun.tools.javac.comp.Attr.attribType(Attr.java:390)
              at com.sun.tools.javac.comp.MemberEnter.visitVarDef(MemberEnter.java:607)
              at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:691)
              at com.sun.tools.javac.comp.MemberEnter.memberEnter(MemberEnter.java:387)
              at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:653)
              at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:691)
              at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
              at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
              at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:413)
              at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:715)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
              at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
              at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
              at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:634)
              at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
              at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
              at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:397)
              at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2697)
              at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2628)
              at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2564)
              at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1036)
              at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
              at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
              at com.sun.tools.javac.main.Main.compile(Main.java:353)
              at com.sun.tools.javac.main.Main.compile(Main.java:279)
              at com.sun.tools.javac.main.Main.compile(Main.java:270)
              at com.sun.tools.javac.Main.compile(Main.java:69)
              at com.sun.tools.javac.Main.main(Main.java:54)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      binary for the .class file called "Empty.class"

      ca fe ba be 00 00 00 32 00 07 01 00 05 45 6d 70 74 79 07 00 01 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 07 00 03 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 00 21 00 02 00 04 00 00 00 00 00 01 00 01 00 05 00 06 00 01 00 07 00 00 00 13 00 00 00 00 00 00 00 01 b1 00 00 00 00 00 00


      source for java file called "EmptyCall.java"

      public class EmptyCall
      {
          public static void main(String[] args)
          {
              Empty e;
              System.out.println("+++ PASS");
          }
      }


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

      Attachments

        Activity

          People

            pgovereau Paul Govereau (Inactive)
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: