JetBrains / java-annotations

Annotations for JVM-based languages.
Apache License 2.0
404 stars 47 forks source link

Java annotations causes NPE in Java Compiler #5

Closed wsargent closed 6 years ago

wsargent commented 6 years ago

❱ java -version
openjdk version "1.8.0-adoptopenjdk" OpenJDK Runtime Environment (build 1.8.0-adoptopenjdk-jenkins_2018_05_19_01_00-b00) OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)

It looks like annotations triggers the https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8210487 in JDK 1.8.

I have not been able to track down a reproducible test case, as the entire compile just goes kablooey.

Information:java: An exception has occurred in the compiler (1.8.0-adoptopenjdk). 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.
Information:java: java.lang.NullPointerException
Information:java:   at com.sun.tools.javac.code.Types.removeWildcards(Types.java:601)
Information:java:   at com.sun.tools.javac.code.Types$DescriptorCache$FunctionDescriptor.getType(Types.java:362)
Information:java:   at com.sun.tools.javac.code.Types.findDescriptorType(Types.java:568)
Information:java:   at com.sun.tools.javac.code.Types.isFunctionalInterface(Types.java:585)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$CheckStuckPolicy.visitLambda(DeferredAttr.java:997)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$OverloadStuckPolicy.visitLambda(DeferredAttr.java:1080)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1624)
Information:java:   at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$FilterScanner.scan(DeferredAttr.java:913)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$CheckStuckPolicy.<init>(DeferredAttr.java:980)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$OverloadStuckPolicy.<init>(DeferredAttr.java:1075)
Information:java:   at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:229)
Information:java:   at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1008)
Information:java:   at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:835)
Information:java:   at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:735)
Information:java:   at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:844)
Information:java:   at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:579)
Information:java:   at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1446)
Information:java:   at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1633)
Information:java:   at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1704)
Information:java:   at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1677)
Information:java:   at com.sun.tools.javac.comp.Resolve.findConstructor(Resolve.java:2568)
Information:java:   at com.sun.tools.javac.comp.Resolve$11.doLookup(Resolve.java:2537)
Information:java:   at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3097)
Information:java:   at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3348)
Information:java:   at com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2534)
Information:java:   at com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2525)
Information:java:   at com.sun.tools.javac.comp.Attr.visitNewClass(Attr.java:2079)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
Information:java:   at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
Information:java:   at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1686)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1384)
Information:java:   at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
Information:java:   at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:661)
Information:java:   at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1124)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
Information:java:   at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1013)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
Information:java:   at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4364)
Information:java:   at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4272)
Information:java:   at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4201)
Information:java:   at com.sun.tools.javac.comp.Attr.visitClassDef(Attr.java:870)
Information:java:   at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
Information:java:   at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4176)
Information:java:   at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
Information:java:   at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
Information:java:   at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
Information:java:   at com.sun.tools.javac.main.Main.compile(Main.java:523)
Information:java:   at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
Information:java:   at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
Information:java:   at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:193)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:448)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:318)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:243)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:201)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1317)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:993)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1065)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:956)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:788)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:377)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:184)
Information:java:   at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:309)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:137)
Information:java:   at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:235)
Information:java:   at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
Information:java:   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Information:java:   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Information:java:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
Information:java:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
Information:java:   at java.lang.Thread.run(Thread.java:748)
Information:java: Errors occurred while compiling module 'securitybuilder'
Information:javac 1.8.0-adoptopenjdk was used to compile java sources
Information:10/10/18 10:24 AM - Compilation completed with 1 error and 0 warnings in 3 s 742 ms
Error:java: Compilation failed: internal java compiler error
wsargent commented 6 years ago

Also from here as well. I think this is unrelated to annotations now, closing.

[INFO] Compiling 32 source files to /home/wsargent/work/tersejsse/target/classes
An exception has occurred in the compiler (1.8.0-adoptopenjdk). 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.NullPointerException
    at com.sun.tools.javac.code.Types.removeWildcards(Types.java:601)
    at com.sun.tools.javac.code.Types$DescriptorCache$FunctionDescriptor.getType(Types.java:362)
    at com.sun.tools.javac.code.Types.findDescriptorType(Types.java:568)
    at com.sun.tools.javac.code.Types.isFunctionalInterface(Types.java:585)
    at com.sun.tools.javac.comp.DeferredAttr$CheckStuckPolicy.visitLambda(DeferredAttr.java:997)
    at com.sun.tools.javac.comp.DeferredAttr$OverloadStuckPolicy.visitLambda(DeferredAttr.java:1080)
    at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1624)
    at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
    at com.sun.tools.javac.comp.DeferredAttr$FilterScanner.scan(DeferredAttr.java:913)
    at com.sun.tools.javac.comp.DeferredAttr$CheckStuckPolicy.<init>(DeferredAttr.java:980)
    at com.sun.tools.javac.comp.DeferredAttr$OverloadStuckPolicy.<init>(DeferredAttr.java:1075)
    at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:229)
    at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:1008)
    at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:835)
    at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:735)
    at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:844)
    at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:579)
    at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1446)
    at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1633)
    at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1704)
    at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1677)
    at com.sun.tools.javac.comp.Resolve.findConstructor(Resolve.java:2568)
    at com.sun.tools.javac.comp.Resolve$11.doLookup(Resolve.java:2537)
    at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3097)
    at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3348)
    at com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2534)
    at com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2525)
    at com.sun.tools.javac.comp.Attr.visitNewClass(Attr.java:2079)
    at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
    at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1686)
    at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1384)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
    at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
    at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:661)
    at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1124)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
    at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
    at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1013)
    at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
    at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
    at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4364)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4272)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4201)
    at com.sun.tools.javac.comp.Attr.visitClassDef(Attr.java:870)
    at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
    at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
    at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4364)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4272)
    at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4201)
    at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4176)
    at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1248)
    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:126)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
    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)
[DEBUG] incrementalBuildHelper#afterRebuildExecution
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] An unknown compilation problem occurred
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.666 s
[INFO] Finished at: 2018-10-10T10:33:21-07:00
[INFO] Final Memory: 14M/246M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project securitybuilder: Compilation failure
[ERROR] An unknown compilation problem occurred
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project securitybuilder: Compilation failure
An unknown compilation problem occurred

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    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)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
An unknown compilation problem occurred

    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1161)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 20 more
jbeckers commented 4 years ago

This is indeed caused by annotations, I just saw this when updating from annotiations 13.1.4 to 20.0.0

amaembo commented 4 years ago

@jbeckers well the problem in the compiler is caused by a bug in the compiler. I believe, this bug is already fixed in Java 9 and higher. It appears in rare cases when TYPE_USE annotation is used around raw types and lambdas or method references. If you cannot migrate to Java 9+ compiler, you may consider using org.jetbrains:annotations-java5 artifact that doesn't use TYPE_USE annotations.

jbeckers commented 4 years ago

I'll try that tonight, thanks for the suggestion!

This might be something to mention in the README.

jbeckers commented 4 years ago

The suggestion worked, thanks!