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

Short code sample that crashes the javac compiler

XMLWordPrintable

    • generic
    • generic

      FULL PRODUCT VERSION :
      java version "1.8.0_65"
      Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
      Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      OSX Yosemite

      A DESCRIPTION OF THE PROBLEM :
      Compiling certain code causes the compiler to crash with an exception

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Create Boom.java with the included contents and compile with javac


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Successful compile
      ACTUAL -
      Compiler terminates with an AssertionError

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.lang.AssertionError
      at com.sun.tools.javac.util.Assert.error(Assert.java:126)
      at com.sun.tools.javac.util.Assert.check(Assert.java:45)
      at com.sun.tools.javac.comp.Lower.initField(Lower.java:1868)
      at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2792)
      at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
      at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
      at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
      at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
      at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
      at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
      at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
      at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
      at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
      at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
      at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
      at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
      at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
      at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
      at com.sun.tools.javac.comp.Lower.translate(Lower.java:2390)
      at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3932)
      at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1512)
      at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
      at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
      at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
      at com.sun.tools.javac.main.Main.compile(Main.java:523)
      at com.sun.tools.javac.main.Main.compile(Main.java:381)
      at com.sun.tools.javac.main.Main.compile(Main.java:370)
      at com.sun.tools.javac.main.Main.compile(Main.java:361)
      at com.sun.tools.javac.Main.compile(Main.java:56)
      at com.sun.tools.javac.Main.main(Main.java:42)


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      class Boom {
          void boom() {
              String x = null;
              class A {
                  public void a() {
                      x.length();
                  }
              };

              Runnable r = () -> {
                  class B {
                      void b() {
                          x.length();
                          new A();
                      }
                  }
              };
          }
      }
      ---------- END SOURCE ----------

            sadayapalam Srikanth Adayapalam (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: