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

Javac crash with illegalAccessError in com.sun.tools.javac.comp.Flow$BaseAnalyzer$JumpKind from class com.sun.tools.javac.comp.Flow$BaseAnalyzer

XMLWordPrintable

    • generic
    • generic

      FULL PRODUCT VERSION :
      Tried with both:
      $ java -version
      java version "1.8.0_92"
      Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

      And:
      [ec2-user@ip-172-31-14-151 ~]$ java -version
      java version "1.8.0_112"
      Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
      Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Windows 10 (version 10.0.15063), Windows 2016 Server, Amazon Linux (4.4.30-32.54.amzn1.x86_64)

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      I've reproduced on my laptop (Windows 10), and two Amazon EC2 servers, one Windows 2016 and one Amazon Linux. All running Maven 3.5.

      A DESCRIPTION OF THE PROBLEM :
      During our Maven build, the Javac compiler crashes with:
      [INFO] Changes detected - recompiling the module!
      [WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
      [INFO] Compiling 5 source files to C:\Users\dmcdaniel\git\crashTest\TAP3\projects\TAP3LoginAPI\target\classes
      An exception has occurred in the compiler (1.8.0_102). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.IllegalAccessError: tried to access class com.sun.tools.javac.comp.Flow$BaseAnalyzer$JumpKind from class com.sun.tools.javac.comp.Flow$BaseAnalyzer
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.resolveContinues(Flow.java:391)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitForeachLoop(Flow.java:587)
              at com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1035)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitIf(Flow.java:679)
      ...


      We have roughly 40 modules in a Maven multi-module project. If we restart the build with the module that fails, it will successfully compile the module it just crashed on and crash on another module. I've tried with default heap setting, -Xmx1024m, -Xmx2048m, and -Xmx3168m. No change in behavior. My Windows 10 laptop has 32gb of memory.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      cd projects/TAP3Master
      mvn clean package -DskipTests


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No compiler crash.
      ACTUAL -
      [INFO] Compiling 5 source files to C:\Users\dmcdaniel\git\crashTest\TAP3\projects\TAP3LoginAPI\target\classes
      An exception has occurred in the compiler (1.8.0_102). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.IllegalAccessError: tried to access class com.sun.tools.javac.comp.Flow$BaseAnalyzer$JumpKind from class com.sun.tools.javac.comp.Flow$BaseAnalyzer
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.resolveContinues(Flow.java:391)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitForeachLoop(Flow.java:587)
              at com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1035)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitIf(Flow.java:679)
              at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1269)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      I could not find any log file. The full output is:
      [INFO] Compiling 5 source files to C:\Users\dmcdaniel\git\crashTest\TAP3\projects\TAP3LoginAPI\target\classes
      An exception has occurred in the compiler (1.8.0_102). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.IllegalAccessError: tried to access class com.sun.tools.javac.comp.Flow$BaseAnalyzer$JumpKind from class com.sun.tools.javac.comp.Flow$BaseAnalyzer
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.resolveContinues(Flow.java:391)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitForeachLoop(Flow.java:587)
              at com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1035)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitIf(Flow.java:679)
              at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1269)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitTry(Flow.java:640)
              at com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:1173)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStats(Flow.java:456)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitBlock(Flow.java:540)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.scanStat(Flow.java:448)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitMethodDef(Flow.java:510)
              at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitClassDef(Flow.java:490)
              at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
              at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
              at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.analyzeTree(Flow.java:761)
              at com.sun.tools.javac.comp.Flow$AliveAnalyzer.analyzeTree(Flow.java:753)
              at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:210)
              at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1327)
              at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1296)
              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.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
              at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
              at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125)
              at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:171)
              at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:886)
              at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
              at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
              at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
              at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
              at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
              at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
              at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
              at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
              at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
              at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
              at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
              at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
              at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
              at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
      [INFO] -------------------------------------------------------------
      [ERROR] COMPILATION ERROR :
      [INFO] -------------------------------------------------------------

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      I have a zip of the entire project located at:
      https://drive.google.com/file/d/0BzW1diyiBNGqdUNUeHZnZWlxS2s/view?usp=sharing
      It's multiple projects and many source files, so it's not possible to paste here.
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      We have to use the -rf :<projectName> maven option to restart the build with the failed module.

            aefimov Aleksej Efimov
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: