Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Symtab#inferModule returns null for java.lang #3710

Open
ascopes opened this issue Jan 10, 2023 · 7 comments
Open

Symtab#inferModule returns null for java.lang #3710

ascopes opened this issue Jan 10, 2023 · 7 comments

Comments

@ascopes
Copy link

ascopes commented Jan 10, 2023

I am writing a test framework for testing compiler plugins and annotation processors with Javac (OpenJDK toolchain).

One of my acceptance test packs runs ErrorProne. Last night I got a Dependabot update to move from 2.17.0 to 2.18.0.

This seems to introduce a NullPointerException on JDK 17 (Temurin) on Ubuntu 22, Mac OS 12, and Windows Server 2022. On JDK 12 and newer, this issue does not occur.

Dropping a report about this as requested in the error message :-)


Failing code is being hit at https://github.com/ascopes/java-compiler-testing/tree/1e138d28a5979cc14aa2401cab66283ac0058c50/acceptance-tests/acceptance-tests-error-prone (which should be buildable and able to have a debugger attached if you are unable to reproduce this yourselves).


Failing Dependabot PR: ascopes/java-compiler-testing#242


Failing code:

/*
 * Copyright (C) 2022 - 2023, the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.example;

import com.google.errorprone.annotations.MustBeClosed;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;

/**
 * This should pass error-prone because it always closes an auto-closeable resource.
 */
public class HappyCase {

  /**
   * Do something.
   *
   * @param args arguments.
   * @throws IOException any exception.
   */
  public static void main(String[] args) throws IOException {
    try (InputStream inputStream = inputStream()) {
      inputStream.read();
    }
  }

  @MustBeClosed
  private static InputStream inputStream() throws IOException {
    Path tempFile = Files.createTempFile("foo", "bar");
    return Files.newInputStream(tempFile);
  }
}

Invoked via test case

  @DisplayName("Happy paths work as expected")
  @JavacCompilerTest
  void happyPathsWorkAsExpected(JctCompiler compiler) {
    try (def workspace = Workspaces.newWorkspace()) {
      // Given
      workspace
          .createSourcePathPackage()
          .createDirectory("org", "example")
          .copyContentsFrom("src", "test", "resources", "code", "nullness", "happy")

      // When
      def compilation = compiler
          .addCompilerOptions(
              "-Xplugin:ErrorProne",
              "-XDcompilePolicy=simple",
          )
          .compile(workspace)

      // Then
      assertThatCompilation(compilation)
          .isSuccessfulWithoutWarnings()
    }
  }

Stacktrace:

2023-01-10T08:15:30.8434810Z  - [ERROR] compiler.err.error.prone.crash /SOURCE_PATH/org/example/HappyCase.java (at line 37, col 23)
2023-01-10T08:15:30.8435545Z    
2023-01-10T08:15:30.8435859Z         35 |   public static void main(String[] args) throws IOException {
2023-01-10T08:15:30.8436261Z         36 |     try (InputStream inputStream = inputStream()) {
2023-01-10T08:15:30.8436579Z         37 |       inputStream.read();
2023-01-10T08:15:30.8436855Z            +       ^^^^^^^^^^^^^^^^^^
2023-01-10T08:15:30.8437094Z         38 |     }
2023-01-10T08:15:30.8437320Z         39 |   }
2023-01-10T08:15:30.8437521Z    
2023-01-10T08:15:30.8437855Z        An unhandled exception was thrown by the Error Prone static analysis plugin.
2023-01-10T08:15:30.8438528Z         Please report this at https://github.com/google/error-prone/issues/new and include the following:
2023-01-10T08:15:30.8450259Z      
2023-01-10T08:15:30.8450762Z         error-prone version: 2.18.0
2023-01-10T08:15:30.8451088Z         BugPattern: CheckReturnValue
2023-01-10T08:15:30.8451357Z         Stack Trace:
2023-01-10T08:15:30.8451667Z         java.lang.NullPointerException
2023-01-10T08:15:30.8452129Z      	at jdk.compiler/com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4857)
2023-01-10T08:15:30.8452661Z      	at jdk.compiler/com.sun.tools.javac.code.Types.isSameType(Types.java:1336)
2023-01-10T08:15:30.8453207Z      	at com.google.errorprone.util.ASTHelpers.isVoidType(ASTHelpers.java:1257)
2023-01-10T08:15:30.8454197Z      	at com.google.errorprone.matchers.UnusedReturnValueMatcher.returnsJavaLangVoid(UnusedReturnValueMatcher.java:155)
2023-01-10T08:15:30.8455071Z      	at com.google.errorprone.matchers.UnusedReturnValueMatcher.lambda$getAllowReasons$1(UnusedReturnValueMatcher.java:149)
2023-01-10T08:15:30.8455750Z      	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
2023-01-10T08:15:30.8456408Z      	at com.google.common.collect.CollectSpliterators$1WithCharacteristics.lambda$tryAdvance$0(CollectSpliterators.java:66)
2023-01-10T08:15:30.8457050Z      	at java.base/java.util.stream.Streams$RangeIntSpliterator.tryAdvance(Streams.java:82)
2023-01-10T08:15:30.8457694Z      	at com.google.common.collect.CollectSpliterators$1WithCharacteristics.tryAdvance(CollectSpliterators.java:66)
2023-01-10T08:15:30.8458371Z      	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
2023-01-10T08:15:30.8459032Z      	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
2023-01-10T08:15:30.8459651Z      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
2023-01-10T08:15:30.8460260Z      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
2023-01-10T08:15:30.8460826Z      	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
2023-01-10T08:15:30.8461370Z      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2023-01-10T08:15:30.8461942Z      	at java.base/java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:548)
2023-01-10T08:15:30.8462618Z      	at com.google.errorprone.matchers.UnusedReturnValueMatcher.isAllowed(UnusedReturnValueMatcher.java:140)
2023-01-10T08:15:30.8463399Z      	at com.google.errorprone.matchers.UnusedReturnValueMatcher.matches(UnusedReturnValueMatcher.java:99)
2023-01-10T08:15:30.8464166Z      	at com.google.errorprone.matchers.UnusedReturnValueMatcher.matches(UnusedReturnValueMatcher.java:69)
2023-01-10T08:15:30.8464830Z      	at com.google.errorprone.matchers.Matchers.lambda$allOf$93cd24cb$1(Matchers.java:137)
2023-01-10T08:15:30.8465794Z      	at com.google.errorprone.bugpatterns.AbstractReturnValueIgnored.matchMethodInvocation(AbstractReturnValueIgnored.java:152)
2023-01-10T08:15:30.8466657Z      	at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
2023-01-10T08:15:30.8467423Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:746)
2023-01-10T08:15:30.8468333Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8468999Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1666)
2023-01-10T08:15:30.8469566Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8470096Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8470578Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8471165Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitExpressionStatement(TreeScanner.java:433)
2023-01-10T08:15:30.8471912Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:633)
2023-01-10T08:15:30.8472733Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitExpressionStatement(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8473425Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1476)
2023-01-10T08:15:30.8474000Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8474523Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8475012Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8475560Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
2023-01-10T08:15:30.8476106Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
2023-01-10T08:15:30.8476726Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
2023-01-10T08:15:30.8477393Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8477987Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1048)
2023-01-10T08:15:30.8478520Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8479047Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8479523Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8480051Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
2023-01-10T08:15:30.8480604Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitTry(TreeScanner.java:374)
2023-01-10T08:15:30.8481229Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitTry(ErrorProneScanner.java:845)
2023-01-10T08:15:30.8481888Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitTry(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8482465Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCTry.accept(JCTree.java:1344)
2023-01-10T08:15:30.8482989Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8483494Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8483987Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8484484Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
2023-01-10T08:15:30.8484996Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
2023-01-10T08:15:30.8485618Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
2023-01-10T08:15:30.8486297Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8486887Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1048)
2023-01-10T08:15:30.8487402Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8487923Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8488407Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8489003Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
2023-01-10T08:15:30.8489552Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206)
2023-01-10T08:15:30.8490178Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:740)
2023-01-10T08:15:30.8490870Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8491697Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
2023-01-10T08:15:30.8492242Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8492769Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8493259Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8493775Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
2023-01-10T08:15:30.8494322Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
2023-01-10T08:15:30.8494856Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
2023-01-10T08:15:30.8495400Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
2023-01-10T08:15:30.8496071Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:548)
2023-01-10T08:15:30.8496752Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8497351Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
2023-01-10T08:15:30.8497872Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
2023-01-10T08:15:30.8498394Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
2023-01-10T08:15:30.8498881Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
2023-01-10T08:15:30.8499385Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
2023-01-10T08:15:30.8499910Z      	at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
2023-01-10T08:15:30.8500512Z      	at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
2023-01-10T08:15:30.8501224Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:560)
2023-01-10T08:15:30.8501989Z      	at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
2023-01-10T08:15:30.8502653Z      	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
2023-01-10T08:15:30.8503207Z      	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56)
2023-01-10T08:15:30.8503730Z      	at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
2023-01-10T08:15:30.8504373Z      	at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
2023-01-10T08:15:30.8505085Z      	at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:156)
2023-01-10T08:15:30.8740029Z      	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
2023-01-10T08:15:30.8740708Z      	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1414)
2023-01-10T08:15:30.8741260Z      	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1361)
2023-01-10T08:15:30.8741834Z      	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:960)
2023-01-10T08:15:30.8742433Z      	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
2023-01-10T08:15:30.8743054Z      	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
2023-01-10T08:15:30.8743673Z      	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
2023-01-10T08:15:30.8744649Z      	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
2023-01-10T08:15:30.8745520Z      	at io.github.ascopes.jct.compilers.impl.JctJsr199Interop.performCompilerPass(JctJsr199Interop.java:533)
2023-01-10T08:15:30.8746248Z      	at io.github.ascopes.jct.compilers.impl.JctJsr199Interop.compile(JctJsr199Interop.java:141)
2023-01-10T08:15:30.8746946Z      	at io.github.ascopes.jct.compilers.AbstractJctCompiler.compile(AbstractJctCompiler.java:124)
2023-01-10T08:15:30.8747640Z      	at io.github.ascopes.jct.compilers.AbstractJctCompiler.compile(AbstractJctCompiler.java:54)
2023-01-10T08:15:30.8748296Z      	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
2023-01-10T08:15:30.8749107Z      	at io.github.ascopes.jct.acceptancetests.errorprone.ErrorProneTest.happyPathsWorkAsExpected(ErrorProneTest.groovy:40)
2023-01-10T08:15:30.8749910Z      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2023-01-10T08:15:30.8750574Z      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2023-01-10T08:15:30.8751292Z      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2023-01-10T08:15:30.8751895Z      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2023-01-10T08:15:30.8752560Z      	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
2023-01-10T08:15:30.8753252Z      	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
2023-01-10T08:15:30.8754026Z      	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
2023-01-10T08:15:30.8754815Z      	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
2023-01-10T08:15:30.8755586Z      	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
2023-01-10T08:15:30.8756453Z      	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestTemplateMethod(TimeoutExtension.java:94)
2023-01-10T08:15:30.8757392Z      	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
2023-01-10T08:15:30.8758358Z      	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
2023-01-10T08:15:30.8759261Z      	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
2023-01-10T08:15:30.8760124Z      	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
2023-01-10T08:15:30.8760985Z      	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
2023-01-10T08:15:30.8761853Z      	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
2023-01-10T08:15:30.8762705Z      	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
2023-01-10T08:15:30.8763581Z      	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
2023-01-10T08:15:30.8845496Z      	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
2023-01-10T08:15:30.8846406Z      	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
2023-01-10T08:15:30.8847287Z      	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
2023-01-10T08:15:30.8848158Z      	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
2023-01-10T08:15:30.8849330Z      	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
2023-01-10T08:15:30.8850144Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
2023-01-10T08:15:30.8850975Z      	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
2023-01-10T08:15:30.8851789Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
2023-01-10T08:15:30.8852475Z      	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
2023-01-10T08:15:30.8853182Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
2023-01-10T08:15:30.8853982Z      	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
2023-01-10T08:15:30.8854816Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
2023-01-10T08:15:30.8855583Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
2023-01-10T08:15:30.8856688Z      	at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185)
2023-01-10T08:15:30.8857982Z      	at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.submit(ForkJoinPoolHierarchicalTestExecutorService.java:118)
2023-01-10T08:15:30.8859042Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:226)
2023-01-10T08:15:30.8859845Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:204)
2023-01-10T08:15:30.8860674Z      	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:142)
2023-01-10T08:15:30.8861538Z      	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:110)
2023-01-10T08:15:30.8862232Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
2023-01-10T08:15:30.8862766Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8863322Z      	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
2023-01-10T08:15:30.8863869Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8864377Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
2023-01-10T08:15:30.8864908Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8986424Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8987056Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8987587Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
2023-01-10T08:15:30.8988133Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8988689Z      	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
2023-01-10T08:15:30.8989209Z      	at java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180)
2023-01-10T08:15:30.8989741Z      	at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104)
2023-01-10T08:15:30.8990294Z      	at java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:699)
2023-01-10T08:15:30.8990845Z      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
2023-01-10T08:15:30.8991771Z      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
2023-01-10T08:15:30.8992377Z      	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
2023-01-10T08:15:30.8992949Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
2023-01-10T08:15:30.8993527Z      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2023-01-10T08:15:30.8994088Z      	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
2023-01-10T08:15:30.8994722Z      	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
2023-01-10T08:15:30.8995269Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8995814Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8996339Z      	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
2023-01-10T08:15:30.8996905Z      	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
2023-01-10T08:15:30.8997485Z      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
2023-01-10T08:15:30.8998165Z      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
2023-01-10T08:15:30.8998774Z      	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
2023-01-10T08:15:30.8999346Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
2023-01-10T08:15:30.8999915Z      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2023-01-10T08:15:30.9000474Z      	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
2023-01-10T08:15:30.9001033Z      	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
2023-01-10T08:15:30.9001601Z      	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
2023-01-10T08:15:30.9002177Z      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
2023-01-10T08:15:30.9002766Z      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
2023-01-10T08:15:30.9003364Z      	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
2023-01-10T08:15:30.9003935Z      	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
2023-01-10T08:15:30.9004491Z      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2023-01-10T08:15:30.9005062Z      	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
2023-01-10T08:15:30.9005777Z      	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:110)
2023-01-10T08:15:30.9006636Z      	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:44)
2023-01-10T08:15:30.9007454Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
2023-01-10T08:15:30.9008273Z      	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
2023-01-10T08:15:30.9009086Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
2023-01-10T08:15:30.9009779Z      	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
2023-01-10T08:15:30.9010473Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
2023-01-10T08:15:30.9011272Z      	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
2023-01-10T08:15:30.9012167Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
2023-01-10T08:15:30.9012950Z      	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
2023-01-10T08:15:30.9013954Z      	at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:185)
2023-01-10T08:15:30.9014869Z      	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
2023-01-10T08:15:30.9015414Z      	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
2023-01-10T08:15:30.9015980Z      	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
2023-01-10T08:15:30.9016523Z      	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
2023-01-10T08:15:30.9017064Z      	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
2023-01-10T08:15:30.9018032Z      	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
@cushon
Copy link
Collaborator

cushon commented Jan 10, 2023

cc @Stephan202 FYI

We saw a similar internal crash that bisected to cc6bc69

It seems like Symtab#inferModule is failing to infer a module for java.lang when it tries to look up the type for java.lang.Void. I'm not sure why that is yet.

copybara-service bot pushed a commit that referenced this issue Jan 10, 2023
*** Reason for rollback ***

Causing b/264944549

See also #3710

*** Original change description ***

Optimize `VisitorState#getSymbolFromName`

By delegating module lookup to `Symtab#inferModule`.

Fixes #3504

***

PiperOrigin-RevId: 501025029
copybara-service bot pushed a commit that referenced this issue Jan 10, 2023
*** Reason for rollback ***

Causing b/264944549

See also #3710

*** Original change description ***

Optimize `VisitorState#getSymbolFromName`

By delegating module lookup to `Symtab#inferModule`.

Fixes #3504

***

PiperOrigin-RevId: 501049979
@marcelo-avila
Copy link

marcelo-avila commented Jan 11, 2023

I've also found in latest version (2.18.0):

[ERROR]      Please report this at https://github.com/google/error-prone/issues/new and include the following:
[ERROR]
[ERROR]      error-prone version: 2.18.0
[ERROR]      BugPattern: UnusedVariable
[ERROR]      Stack Trace:
[ERROR]      java.lang.IndexOutOfBoundsException: Range [722, 709) out of bounds for length 4028
[ERROR]         at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
[ERROR]         at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112)
[ERROR]         at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349)
[ERROR]         at java.base/java.util.Objects.checkFromToIndex(Objects.java:411)
[ERROR]         at java.base/java.nio.HeapCharBuffer.subSequence(HeapCharBuffer.java:671)
[ERROR]         at java.base/java.nio.HeapCharBuffer.subSequence(HeapCharBuffer.java:44)
[ERROR]         at com.google.errorprone.VisitorState.getOffsetTokens(VisitorState.java:595)
[ERROR]         at com.google.errorprone.fixes.SuggestedFixes.replaceIncludingComments(SuggestedFixes.java:1667)
[ERROR]         at com.google.errorprone.bugpatterns.UnusedVariable.buildUnusedVarFixes(UnusedVariable.java:409)
[ERROR]         at com.google.errorprone.bugpatterns.UnusedVariable.matchCompilationUnit(UnusedVariable.java:249)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:555)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
[ERROR]         at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:619)
[ERROR]         at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:66)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
[ERROR]         at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:156)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1394)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1341)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:933)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
[ERROR]         at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:136)
[ERROR]         at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:182)
[ERROR]         at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1209)
[ERROR]         at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:198)
[ERROR]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:294)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
[ERROR]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
[ERROR]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
[ERROR]         at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:578)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

[ERROR]      Please report this at https://github.com/google/error-prone/issues/new and include the following:
[ERROR]
[ERROR]      error-prone version: 2.18.0
[ERROR]      BugPattern: BadImport
[ERROR]      Stack Trace:
[ERROR]      java.lang.IllegalArgumentException: invalid replacement: [803, -1) ()
[ERROR]         at com.google.common.base.Preconditions.checkArgument(Preconditions.java:453)
[ERROR]         at com.google.errorprone.fixes.Replacement.create(Replacement.java:37)
[ERROR]         at com.google.errorprone.fixes.SuggestedFix$ReplacementFix.getReplacement(SuggestedFix.java:423)
[ERROR]         at com.google.errorprone.fixes.SuggestedFix.getReplacements(SuggestedFix.java:94)
[ERROR]         at com.google.errorprone.fixes.AppliedFix$Applier.apply(AppliedFix.java:69)
[ERROR]         at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228)
[ERROR]         at com.google.errorprone.JavacErrorDescriptionListener.lambda$new$1(JavacErrorDescriptionListener.java:94)
[ERROR]         at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
[ERROR]         at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
[ERROR]         at java.base/java.util.Collections$2.tryAdvance(Collections.java:4853)
[ERROR]         at java.base/java.util.Collections$2.forEachRemaining(Collections.java:4861)
[ERROR]         at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
[ERROR]         at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
[ERROR]         at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
[ERROR]         at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[ERROR]         at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
[ERROR]         at com.google.errorprone.JavacErrorDescriptionListener.onDescribed(JavacErrorDescriptionListener.java:107)
[ERROR]         at com.google.errorprone.ErrorProneAnalyzer.lambda$finished$1(ErrorProneAnalyzer.java:141)
[ERROR]         at com.google.errorprone.VisitorState.reportMatch(VisitorState.java:301)
[ERROR]         at com.google.errorprone.scanner.Scanner.reportMatch(Scanner.java:127)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:448)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitImport(ErrorProneScanner.java:660)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitImport(ErrorProneScanner.java:150)
[ERROR]         at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCImport.accept(JCTree.java:688)
[ERROR]         at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
[ERROR]         at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
[ERROR]         at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
[ERROR]         at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
[ERROR]         at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:151)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:560)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
[ERROR]         at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:619)
[ERROR]         at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:66)
[ERROR]         at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
[ERROR]         at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
[ERROR]         at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:156)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1394)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1341)
[ERROR]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:933)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
[ERROR]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
[ERROR]         at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:136)
[ERROR]         at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:182)
[ERROR]         at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1209)
[ERROR]         at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:198)
[ERROR]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171)
[ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:294)
[ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
[ERROR]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
[ERROR]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
[ERROR]         at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:578)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
[ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

@cushon cushon changed the title NullPointerException in 2.18.0 Symtab#inferModule returns null for java.lang Jan 11, 2023
@cushon
Copy link
Collaborator

cushon commented Jan 11, 2023

The IndexOutOfBoundsException in UnusedVariable is a different bug: #1700

@cushon
Copy link
Collaborator

cushon commented Jan 11, 2023

cc6bc69 has been rolled back, but I'll leave this open to track fixing forward. I haven't had time to investigate much yet.

@Stephan202
Copy link
Contributor

I haven't had time to investigate much yet.

Same here; yesterday I tried to reproduce it using a tiny unit test, but that failed. Next up would be to have a closer look at @ascopes' code, but looking at my agenda, I doubt I'll find a moment before the weekend.

@ascopes
Copy link
Author

ascopes commented Jan 11, 2023

No rush or anything! Thanks for taking the time

@ascopes
Copy link
Author

ascopes commented Jan 12, 2023

Just been thinking about this a bit.

The only things I can think of that would differ to running javac normally is that the file manager I use is a custom one that does not implement StandardFileManager, so some information would not be present that StandardFileManager provides. I don't believe this should impact anything unless there is already a bug in javac though. JDK 12, 13, 14, ..., 17, 18 and 19 all pass on this which makes me think it could be a javac bug.

The only other thing that might be related is that the JavaFileObject that I use does not supply the access level info or the nesting kind. Instead, it returns null. That should be valid under the file object API though. Again, I'd expect it to fail under JDK12 as well though if this was the issue.

If not, could this be related to JPMS visibility somewhere? Since the file manager I am using is custom, it lives in a separate module. To get error prone to work, I had to open internal JDK modules via JVM arguments passed to Maven Surefire.

--

ascopes added a commit to ascopes/java-compiler-testing that referenced this issue Jan 30, 2023
ascopes added a commit to ascopes/java-compiler-testing that referenced this issue Feb 19, 2023
ascopes added a commit to ascopes/java-compiler-testing that referenced this issue Feb 19, 2023
dependabot bot pushed a commit to ascopes/java-compiler-testing that referenced this issue Feb 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants