Skip to content

[GR-50854] [GR-50853] Native Image: ClassCastException: class jdk.vm.ci.meta.NullConstant cannot be cast to class org.graalvm.compiler.core.common.type.TypedConstant #7986

Closed
@mmoayyed

Description

@mmoayyed

Running with Gradle 8.5, and GraalVM 23.1.1, the following stacktrace shows up when native images are built:

[native-image-plugin] GraalVM Toolchain detection is disabled
[native-image-plugin] GraalVM location read from environment variable: JAVA_HOME
[native-image-plugin] Native Image executable path: /Library/Java/JavaVirtualMachines/graalvm/Contents/Home/lib/svm/bin/native-image
Warning: The option '-H:ReflectionConfigurationResources=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/tomcat-reflection.json' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:+BuildReport' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:+InlineBeforeAnalysis' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:ResourceConfigurationResources=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/tomcat-resource.json' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:ReflectionConfigurationResources=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/tomcat-reflection.json' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:ResourceConfigurationResources=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/tomcat-resource.json' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: The option '-H:+TraceSecurityServices' is experimental and must be enabled via '-H:+UnlockExperimentalVMOptions' in the future.
Warning: Please re-evaluate whether any experimental option is required, and either remove or unlock it. The build output lists all active experimental options, including where they come from and possible alternatives. If you think an experimental option should be considered as stable, please file an issue.
========================================================================================================================
GraalVM Native Image: Generating 'cas' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
Warning: Using -g is not supported on macOS
Registering BouncyCastle security provider
The URL protocol jar is not tested and might not work as expected.
Supported URL protocols enabled by default: file,resource. Supported URL protocols available on demand: http,https.
The URL protocol file is enabled by default. The option --enable-url-protocols=file is not needed.
The URL protocol resource is enabled by default. The option --enable-url-protocols=resource is not needed.
[1/8] Initializing...                                                                                    (9.5s @ 0.57GB)
 Java version: 21.0.1+12, vendor version: Oracle GraalVM 21.0.1+12.1
 Graal compiler: optimization level: b, target machine: native, PGO: off
 C compiler: cc (apple, arm64, 15.0.0)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 7 user-specific feature(s):
 - com.oracle.svm.polyglot.groovy.GroovyIndyInterfaceFeature
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - org.apereo.cas.nativex.features.DefaultNativeImageFeature
 - org.eclipse.angus.activation.nativeimage.AngusActivationFeature
 - org.eclipse.angus.mail.nativeimage.AngusMailFeature
 - org.graalvm.home.HomeFinderFeature: Finds GraalVM paths and its version number
 - org.springframework.aot.nativex.feature.PreComputeFieldFeature
------------------------------------------------------------------------------------------------------------------------
 4 experimental option(s) unlocked:
 - '-H:+BuildReport' (origin(s): command line)
 - '-H:ResourceConfigurationResources' (origin(s): 'META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/native-image.properties' in 'file:///Users/misagh/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.16/tomcat-embed-core-10.1.16.jar', 'META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/native-image.properties' in 'file:///Users/misagh/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.16/tomcat-embed-el-10.1.16.jar')
 - '-H:+TraceSecurityServices' (origin(s): command line)
 - '-H:ReflectionConfigurationResources' (origin(s): 'META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/native-image.properties' in 'file:///Users/misagh/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.16/tomcat-embed-core-10.1.16.jar', 'META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/native-image.properties' in 'file:///Users/misagh/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.16/tomcat-embed-el-10.1.16.jar')
------------------------------------------------------------------------------------------------------------------------
Build resources:
 - 10.67GB of memory (16.7% of 64.00GB system memory, set via '-Xmx12G')
 - 10 thread(s) (100.0% of 10 available processor(s), determined at start)
# Printing compilation-target information to: /Users/misagh/Workspace/GitWorkspace/cas-server/webapp/cas-server-webapp-native/build/native/nativeCompile/reports/target_info_20231209_174400.txt
# Printing security services automatic registration to: /Users/misagh/Workspace/GitWorkspace/cas-server/webapp/cas-server-webapp-native/build/native/nativeCompile/reports/security_services_20231209_174407.txt
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
[2/8] Performing analysis...  []                                                                        (41.4s @ 3.31GB)
   39,119 reachable types   (86.5% of   45,220 total)
   60,797 reachable fields  (66.8% of   91,023 total)
  192,573 reachable methods (61.9% of  311,142 total)
   15,515 types, 9,316 fields, and 40,788 methods registered for reflection
        1 native library: -framework CoreServices

Error: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class jdk.vm.ci.meta.NullConstant cannot be cast to class org.graalvm.compiler.core.common.type.TypedConstant (jdk.vm.ci.meta.NullConstant is in module jdk.internal.vm.ci of loader 'bootstrap'; org.graalvm.compiler.core.common.type.TypedConstant is in module jdk.internal.vm.compiler of loader 'platform')
com.oracle.graal.pointsto.util.AnalysisError: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class jdk.vm.ci.meta.NullConstant cannot be cast to class org.graalvm.compiler.core.common.type.TypedConstant (jdk.vm.ci.meta.NullConstant is in module jdk.internal.vm.ci of loader 'bootstrap'; org.graalvm.compiler.core.common.type.TypedConstant is in module jdk.internal.vm.compiler of loader 'platform')
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.shouldNotReachHere(AnalysisError.java:169)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:66)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.analysis.NativeImagePointsToAnalysis.lambda$onTypeReachable$0(NativeImagePointsToAnalysis.java:119)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:187)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:171)
        at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.util.concurrent.ExecutionException: java.lang.ClassCastException: class jdk.vm.ci.meta.NullConstant cannot be cast to class org.graalvm.compiler.core.common.type.TypedConstant (jdk.vm.ci.meta.NullConstant is in module jdk.internal.vm.ci of loader 'bootstrap'; org.graalvm.compiler.core.common.type.TypedConstant is in module jdk.internal.vm.compiler of loader 'platform')
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:64)
        ... 9 more
Caused by: java.lang.ClassCastException: class jdk.vm.ci.meta.NullConstant cannot be cast to class org.graalvm.compiler.core.common.type.TypedConstant (jdk.vm.ci.meta.NullConstant is in module jdk.internal.vm.ci of loader 'bootstrap'; org.graalvm.compiler.core.common.type.TypedConstant is in module jdk.internal.vm.compiler of loader 'platform')
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerGraphDecoder.handleArrayCopy(SimulateClassInitializerGraphDecoder.java:351)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerGraphDecoder.handleArrayCopyNode(SimulateClassInitializerGraphDecoder.java:330)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerGraphDecoder.doCanonicalizeFixedNode(SimulateClassInitializerGraphDecoder.java:220)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.hosted.k.doCanonicalizeFixedNode(stripped:44)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.canonicalizeFixedNode(InlineBeforeAnalysisGraphDecoder.java:192)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.SimplifyingGraphDecoder.handleFixedNode(SimplifyingGraphDecoder.java:194)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:928)
------------------------------------------------------------------------------------------------------------------------        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysisGraphDecoder.java:344)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:650)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:892)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerGraphDecoder.decode(SimulateClassInitializerGraphDecoder.java:151)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerSupport.decodeGraph(SimulateClassInitializerSupport.java:480)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerSupport.addClassInitializerDependencies(SimulateClassInitializerSupport.java:453)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerSupport.trySimulateClassInitializer(SimulateClassInitializerSupport.java:363)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.SimulateClassInitializerSupport.trySimulateClassInitializer(SimulateClassInitializerSupport.java:217)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.analysis.DynamicHubInitializer.buildClassInitializationInfo(DynamicHubInitializer.java:196)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.analysis.DynamicHubInitializer.initializeMetaData(DynamicHubInitializer.java:106)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.analysis.NativeImagePointsToAnalysis.initializeMetaData(NativeImagePointsToAnalysis.java:124)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisUniverse.initializeMetaData(AnalysisUniverse.java:706)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisType.lambda$new$1(AnalysisType.java:311)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisFuture.ensureDone(AnalysisFuture.java:63)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.InlineBeforeAnalysisGraphDecoderImpl.handleEnsureClassInitializedNode(InlineBeforeAnalysisGraphDecoderImpl.java:73)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.InlineBeforeAnalysisGraphDecoderImpl.doCanonicalizeFixedNode(InlineBeforeAnalysisGraphDecoderImpl.java:55)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.canonicalizeFixedNode(InlineBeforeAnalysisGraphDecoder.java:192)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.SimplifyingGraphDecoder.handleFixedNode(SimplifyingGraphDecoder.java:194)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:928)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysisGraphDecoder.java:344)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:650)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:892)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysis.decodeGraph(InlineBeforeAnalysis.java:76)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:195)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:621)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:167)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:153)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraphInfo(MethodTypeFlow.java:111)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultStaticInvokeTypeFlow.lambda$update$0(DefaultStaticInvokeTypeFlow.java:75)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.LightImmutableCollection.forEach(LightImmutableCollection.java:90)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultStaticInvokeTypeFlow.update(DefaultStaticInvokeTypeFlow.java:74)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:491)
        ... 8 more
                        5.3s (10.3% of total time) in 82 GCs | Peak RSS: 5.53GB | CPU load: 6.53
Fatal error: com.oracle.svm.core.util.VMError$HostedError: Failed to generate build report
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:86)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a.a(stripped:240)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.hosted.h.createAdditionalArtifacts(stripped:125)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ProgressReporter.createAdditionalArtifacts(ProgressReporter.java:723)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ProgressReporter.printEpilog(ProgressReporter.java:672)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.reportEpilog(NativeImageGeneratorRunner.java:604)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:596)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:720)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:142)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:97)
Caused by: java.lang.NullPointerException: Cannot invoke "org.graalvm.nativeimage.hosted.Feature$AfterAnalysisAccess.findClassByName(String)" because "this.afterAnalysisAccess" is null
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.Log4ShellFeature.getUserWarning(Log4ShellFeature.java:154)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.data.a$1.i(stripped:85)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.data.a.c(stripped:220)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.data.a.a(stripped:188)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.data.a.e(stripped:177)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a$b.a(stripped:187)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a$b.a(stripped:156)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a$b.a(stripped:143)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a$b.a(stripped:152)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a$b.a(stripped:165)
        at com.oracle.svm.svm_enterprise/com.oracle.svm.enterprise.buildreport.a.a(stripped:235)
        ... 8 more

The particular application I am testing is a Java Spring Boot 3.2 web application that also does contain Hazelcast 5.3.6. This Hazelcast library I think is somehow contributing to the issue here.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions