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

Checker Framework crashes and reports an unexpected type combination #6322

Closed
jyoo980 opened this issue Nov 30, 2023 · 4 comments
Closed

Checker Framework crashes and reports an unexpected type combination #6322

jyoo980 opened this issue Nov 30, 2023 · 4 comments
Assignees
Labels
Milestone

Comments

@jyoo980
Copy link
Contributor

jyoo980 commented Nov 30, 2023

Summary

The Checker Framework has crashed on a Gradle compilation on this project and branch when the Optional Checker is invoked.

I am not able to reproduce this error with the Nullness Checker.

Steps to Reproduce

Please run the following sequence of commands on your shell.

# Clone the repository and cd into it
git clone git@github.com:jyoo980/caffeine.git
cd caffeine

# Check out the branch with the `build.gradle.kts` changes required to invoke the CF's Optional Checker.
git checkout yoo/optional-checker
./gradlew --no-build-cache assemble

Output

The full log is available as a Gradle build scan here.

If the build scan is unavailable, the log is also available here.

But here is some output that might be useful:


error: DefaultTypeHierarchy: unexpected combination: |  
-- | --
type: INT @MaybePresent int |  
superType: ARRAY @MaybePresent Object @MaybePresent [] |  
visitHistory = VisitHistory( {IPair(@MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>, @MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>, @MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Iterable<capture#01 extends K extends @MaybePresent Object>, @MaybePresent Iterable<? extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CompletableFuture<? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Function<capture#02 extends @MaybePresent Object super K extends @MaybePresent Object, capture#03 extends V extends @MaybePresent Object>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent BiFunction<capture#04 extends @MaybePresent Object super K extends @MaybePresent Object, capture#05 extends @MaybePresent Object super @OptionalBottom CompletableFuture<V extends @MaybePresent Object>, capture#06 extends @MaybePresent CompletableFuture<V extends @MaybePresent Object>>, @MaybePresent BiFunction<? extends @MaybePresent Object super K extends @MaybePresent Object, ? extends @MaybePresent Object super @MaybePresent CompletableFuture<V extends @MaybePresent Object>, ? extends @MaybePresent CompletableFuture<V extends @MaybePresent Object>>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Function<capture#07 extends @MaybePresent Object super @OptionalBottom Set<? extends K extends @MaybePresent Object>, capture#08 extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Function<? extends @MaybePresent Object super @MaybePresent Set<? extends K extends @MaybePresent Object>, ? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Consumer<capture#09 extends @MaybePresent Object super V extends @MaybePresent Object>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CacheLoader<capture#010 extends @MaybePresent Object super K extends @MaybePresent Object, V extends @MaybePresent Object>, @MaybePresent CacheLoader<capture#010 extends @MaybePresent Object super K extends @MaybePresent Object, V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent AsMapView<K extends @MaybePresent Object, V extends @MaybePresent Object>.@MaybePresent Values, @MaybePresent Collection<V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CompletableFuture<capture#011 extends @MaybePresent Object>, @MaybePresent CompletableFuture<? extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Ticker, @MaybePresent Ticker)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Ticker, @MaybePresent Ticker)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Object, capture#012 extends @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent BoundedLocalCache<capture#013 extends @MaybePresent Object, capture#014 extends @MaybePresent Object>, @MaybePresent BoundedLocalCache<? extends @MaybePresent Object, ? extends … |  
; The Checker Framework crashed.  Please report the crash.  Version: Checker Framework 3.40.0. |  
Compilation unit: /Users/yoo/workspace/sourcegraph-util/caffeine/caffeine/src/main/java/com/github/benmanes/caffeine/cache/BoundedLocalCache.java |  
Last visited tree at line 4659 column 36: |  
DRAIN_STATUS.setOpaque(this, drainStatus); |  
Exception: java.lang.Throwable; java.lang.Throwable |  
at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:22) |  
at org.checkerframework.framework.type.visitor.AtmComboVisitor.defaultAction(AtmComboVisitor.java:58) |  
at org.checkerframework.framework.type.visitor.AbstractAtmComboVisitor.visitPrimitive_Array(AbstractAtmComboVisitor.java:387) |  
at org.checkerframework.framework.util.AtmCombo.accept(AtmCombo.java:504) |  
at org.checkerframework.framework.type.DefaultTypeHierarchy.isSubtype(DefaultTypeHierarchy.java:258) |  
at org.checkerframework.framework.type.DefaultTypeHierarchy.isSubtype(DefaultTypeHierarchy.java:136) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.commonAssignmentCheck(BaseTypeVisitor.java:3055) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.checkVarargs(BaseTypeVisitor.java:1938) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitMethodInvocation(BaseTypeVisitor.java:1805) |  
at org.checkerframework.checker.optional.OptionalVisitor.visitMethodInvocation(OptionalVisitor.java:323) |  
at org.checkerframework.checker.optional.OptionalVisitor.visitMethodInvocation(OptionalVisitor.java:41) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1666) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82) |  
at org.checkerframework.framework.source.SourceVisitor.scan(SourceVisitor.java:92) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:405) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.source.util.TreeScanner.visitExpressionStatement(TreeScanner.java:433) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1476) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82) |  
at org.checkerframework.framework.source.SourceVisitor.scan(SourceVisitor.java:92) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:405) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105) |  
at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1048) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82) |  
at org.checkerframework.framework.source.SourceVisitor.scan(SourceVisitor.java:92) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:405) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90) |  
at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206) |  
at org.checkerframework.framework.source.SourceVisitor.visitMethod(SourceVisitor.java:110) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitMethod(BaseTypeVisitor.java:1043) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitMethod(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82) |  
at org.checkerframework.framework.source.SourceVisitor.scan(SourceVisitor.java:92) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:405) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113) |  
at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187) |  
at org.checkerframework.framework.source.SourceVisitor.visitClass(SourceVisitor.java:98) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.processClassTree(BaseTypeVisitor.java:612) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:558) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82) |  
at org.checkerframework.framework.source.SourceVisitor.scan(SourceVisitor.java:92) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:405) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.scan(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105) |  
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113) |  
at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187) |  
at org.checkerframework.framework.source.SourceVisitor.visitClass(SourceVisitor.java:98) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.processClassTree(BaseTypeVisitor.java:612) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:558) |  
at org.checkerframework.common.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:186) |  
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808) |  
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:56) |  
at org.checkerframework.framework.source.SourceVisitor.visit(SourceVisitor.java:86) |  
at org.checkerframework.framework.source.SourceChecker.typeProcess(SourceChecker.java:1046) |  
at org.checkerframework.common.basetype.BaseTypeChecker.typeProcess(BaseTypeChecker.java:558) |  
at org.checkerframework.javacutil.AbstractTypeProcessor$AttributionTaskListener.finished(AbstractTypeProcessor.java:188) |  
at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:828) |  
at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132) |  
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1414) |  
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1361) |  
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:960) |  
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104) |  
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147) |  
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100) |  
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94) |  
at org.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:92) |  
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94) |  
at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57) |  
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:55) |  
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39) |  
at org.gradle.api.internal.tasks.compile.daemon.AbstractIsolatedCompilerWorkerExecutor$CompilerWorkAction.execute(AbstractIsolatedCompilerWorkerExecutor.java:78) |  
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) |  
at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54) |  
at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48) |  
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) |  
at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48) |  
at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:32) |  
at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:22) |  
at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:96) |  
at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:65) |  
at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:138) |  
at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41) |  
at org.gradle.process.internal.worker.request.WorkerAction.lambda$run$0(WorkerAction.java:135) |  
at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80) |  
at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:127) |  
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) |  
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) |  
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) |  
at java.base/java.lang.reflect.Method.invoke(Method.java:566) |  
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) |  
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) |  
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) |  
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) |  
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414) |  
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) |  
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) |  
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) |  
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) |  
at java.base/java.lang.Thread.run(Thread.java:829) |  
error: DefaultTypeHierarchy: unexpected combination: |  
type: LONG @MaybePresent long |  
superType: ARRAY @MaybePresent Object @MaybePresent [] |  
visitHistory = VisitHistory( {IPair(@MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>, @MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>, @MaybePresent AsyncLoadingCache<K1 extends K extends @MaybePresent Object, V1 extends V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Iterable<capture#01 extends K extends @MaybePresent Object>, @MaybePresent Iterable<? extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent BaseMpscLinkedArrayQueue<capture#0376 extends @MaybePresent Object>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CompletableFuture<? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CompletableFuture<? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CompletableFuture<? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Function<capture#02 extends @MaybePresent Object super K extends @MaybePresent Object, capture#03 extends V extends @MaybePresent Object>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent BiFunction<capture#04 extends @MaybePresent Object super K extends @MaybePresent Object, capture#05 extends @MaybePresent Object super @OptionalBottom CompletableFuture<V extends @MaybePresent Object>, capture#06 extends @MaybePresent CompletableFuture<V extends @MaybePresent Object>>, @MaybePresent BiFunction<? extends @MaybePresent Object super K extends @MaybePresent Object, ? extends @MaybePresent Object super @MaybePresent CompletableFuture<V extends @MaybePresent Object>, ? extends @MaybePresent CompletableFuture<V extends @MaybePresent Object>>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Function<capture#07 extends @MaybePresent Object super @OptionalBottom Set<? extends K extends @MaybePresent Object>, capture#08 extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>, @MaybePresent Function<? extends @MaybePresent Object super @MaybePresent Set<? extends K extends @MaybePresent Object>, ? extends @MaybePresent Map<? extends K extends @MaybePresent Object, ? extends V extends @MaybePresent Object>>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Consumer<capture#09 extends @MaybePresent Object super V extends @MaybePresent Object>, @MaybePresent Object)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent CacheLoader<capture#010 extends @MaybePresent Object super K extends @MaybePresent Object, V extends @MaybePresent Object>, @MaybePresent CacheLoader<capture#010 extends @MaybePresent Object super K extends @MaybePresent Object, V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Optional<@MaybePresent Duration>, @MaybePresent Optional<@MaybePresent Duration>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent AsMapView<K extends @MaybePresent Object, V extends @MaybePresent Object>.@MaybePresent Values, @MaybePresent Collection<V extends @MaybePresent Object>)=[@org.checkerframework.checker.optional.qual.MaybePresent], IPair(@MaybePresent Set<capture#0377 extends K extends @MaybePresent Object>, @OptionalBottom Set<? extends K exte… |  
; The Checker Framework crashed.  Please report the crash.  Version: Checker Framework 3.40.0. |  
Compilation unit: /Users/yoo/workspace/sourcegraph-util/caffeine/caffeine/src/main/java/com/github/benmanes/caffeine/cache/MpscGrowableArrayQueue.java |  
Last visited tree at line 560 column 30: |  
P_INDEX.setRelease(self, v); |  
Exception: java.lang.Throwable; java.lang.Throwable |  
at org.checkerframework.javacutil.BugInCF.<init>(BugInCF.java:22)
@mernst mernst added the crash label Nov 30, 2023
@mernst mernst added this to the Critical milestone Nov 30, 2023
@smillst
Copy link
Member

smillst commented Dec 5, 2023

If I use the latest release of the Checker Framework, I don't get these crashes. Can you confirm that these are fixed?

I do get the following errors:

> Task :caffeine:javadoc
javadoc: error - The code being documented uses modules but the packages defined in https://checkerframework.org/api/ are in the unnamed module.
javadoc: error - The code being documented uses modules but the packages defined in https://errorprone.info/api/latest/ are in the unnamed module.
2 errors 

@smillst smillst assigned jyoo980 and unassigned smillst Dec 5, 2023
@jyoo980
Copy link
Contributor Author

jyoo980 commented Dec 10, 2023

@smillst Apologies for the late response.

I was able to compile the project with 3.41.0 of the Checker Framework. I do not see the same crash as before, but the build appears to be failing at a Javadoc step with the error:

javadoc: error - Error fetching URL: https://checkerframework.org/api/	
1 error	
FAILURE: Build completed with 2 failures.	
1: Task failed with an exception.	
-----------	
* What went wrong:	
Execution failed for task ':caffeine:javadoc'.	
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/yoo/caffeine/caffeine/build/tmp/javadoc/javadoc.options'

The full build log is available here: https://scans.gradle.com/s/oubyyvtwwn6uy

@mernst
Copy link
Member

mernst commented Dec 10, 2023

Might the Javadoc problem be related to #5438 (comment)?

@jyoo980
Copy link
Contributor Author

jyoo980 commented Dec 24, 2023

Sorry for the late follow-up.

It looks like it was related! The project now compiles with no failures wrt. Javadoc. Closing the issue now.

@jyoo980 jyoo980 closed this as completed Dec 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants