Skip to content

[Native Image] Inspecting Type.getTypeName & getAnnotation yields errors #11503

Open
@JaroslavTulach

Description

@JaroslavTulach

Describe the Issue

I am trying to find out classes with a special annotation that get into native image heap and do something based on that annotation values. This seems to fail on GraalVM 24.0.1. See the attached demo project.

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

openjdk version "24.0.1" 2025-04-15
OpenJDK Runtime Environment GraalVM CE 24.0.1+9.1 (build 24.0.1+9-jvmci-b01)
OpenJDK 64-Bit Server VM GraalVM CE 24.0.1+9.1 (build 24.0.1+9-jvmci-b01, mixed mode, sharing)

Operating System and Version

Ubuntu

Build Command

Unzip NativeImageHeap.zip and then run:

JAVA_HOME=/graalvm-24/ mvn -f NativeInspectHeap/ clean install

the execution fails with


> jdk.graal.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.util.AnalysisError: java.lang.UnsatisfiedLinkError: 'java.lang.String com.oracle.svm.core.hub.DynamicHub.getTypeName()'
        at parsing com.oracle.svm.core.hub.DynamicHub.fromClass(DynamicHub.java:782)
        at parsing com.oracle.svm.core.snippets.SubstrateIsArraySnippets.classIsArray(SubstrateIsArraySnippets.java:35)
        at parsing jdk.graal.compiler.replacements.IsArraySnippets.objectIsArraySnippet(IsArraySnippets.java:42)

Expected Behavior

  • I believe all Type instances in the heap should properly implement getTypeName()
  • I believe all Type instances that are also AnnotatedElement instances should implement getAnnotation
  • definitely calling these methods shouldn't break the native-image compilation with interenal error

Actual Behavior

the execution fails with


> jdk.graal.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.util.AnalysisError: java.lang.UnsatisfiedLinkError: 'java.lang.String com.oracle.svm.core.hub.DynamicHub.getTypeName()'
        at parsing com.oracle.svm.core.hub.DynamicHub.fromClass(DynamicHub.java:782)
        at parsing com.oracle.svm.core.snippets.SubstrateIsArraySnippets.classIsArray(SubstrateIsArraySnippets.java:35)
        at parsing jdk.graal.compiler.replacements.IsArraySnippets.objectIsArraySnippet(IsArraySnippets.java:42)

Steps to Reproduce

Unzip NativeImageHeap.zip and then run:

JAVA_HOME=/graalvm-24/ mvn -f NativeInspectHeap/ clean install

Additional Context

No response

Build Log Output and Error Messages

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions