8000 [Native Image] *.class constants contains garbage in Graal VM 23 · Issue #10928 · oracle/graal · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[Native Image 8000 ] *.class constants contains garbage in Graal VM 23 #10928

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

Closed
1 task done
minamoto79 opened this issue Mar 25, 2025 · 1 comment
Closed
1 task done

[Native Image] *.class constants contains garbage in Graal VM 23 #10928

minamoto79 opened this issue Mar 25, 2025 · 1 comment

Comments

@minamoto79
Copy link

Describe the Issue

For evaluation needs Graal VM debugger plugin in IntelIJ idea relay on *.class constants, but it was broken in version 23.

project: origin git@github.com:antonarhipov/graalvm-demo.git

docker file with Graal VM:

ARG JAVA_VERSION=21
FROM ghcr.io/graalvm/native-image-community:${JAVA_VERSION}
RUN microdnf update -y oraclelinux-release-el9 \
    && microdnf --enablerepo ol9_codeready_builder install -y gdb-gdbserver gcc maven \
    && microdnf clean all

I've build 4 variants of image with build arg JAVA_VERSION: 21, 22, 23, 24

and on breakpoint at org.demo.graalvm.PangramController#hello

executed gdb script:

p/s (char *)&__svm_vm_java_version
p/s (char *)&__svm_version_info
p/s 'byte[].class'.name.value.data
p/s 'java.lang.Class.class'.name.value.data

for each variants:

(gdb) source detection.gdb 
$9 = 0x5361e90 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=21.0.2"
$10 = 0x5361ec0 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 21.0.2+13.1"
$11 = 0xfffff652e588 "[B"
$12 = 0xfffff5a12be0 "java.lang.Class"


(gdb) source detection.gdb 
$4 = 0x5341e78 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=22.0.2"
$5 = 0x5341ea8 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 22.0.2+9.1"
$6 = 0xfffff655d440 "[B"
$7 = 0xfffff5ad28c0 "java.lang.Class"

4 = 0x29a0e90 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=23.0.2"
$5 = 0x29a0ec0 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 23.0.2+7.1"
$6 = 0x100054a7d4067 <error: Cannot access memory at address 0x100054a7d4067>
src/main/gdb/detection.gdb:4: Error in sourced command file:
Location address is not set.


(gdb) source detection.gdb 
$2 = 0x29e0f50 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=24"
$3 = 0x29e0f78 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 24+36.1"
$4 = 0xfffff6f591c0 "[B"
$5 = 0xfffff5f65ba8 "java.lang.Class"

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

openjdk 23.0.2 2025-01-21
OpenJDK Runtime Environment GraalVM CE 23.0.2+7.1 (build 23.0.2+7-jvmci-b01)
OpenJDK 64-Bit Server VM GraalVM CE 23.0.2+7.1 (build 23.0.2+7-jvmci-b01, mixed mode, sharing)

Operating System and Version

Linux a58701e53c63 6.12.5-linuxkit #1 SMP Tue Jan 21 10:23:32 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux

Build Command

/usr/lib64/graalvm/graalvm-community-java23/bin/native-image -cp /project/target/classes:/root/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.4.2/spring-boot-starter-web-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter/3.4.2/spring-boot-starter-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot/3.4.2/spring-boot-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.4.2/spring-boot-autoconfigure-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/3.4.2/spring-boot-starter-logging-3.4.2.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.5.16/logback-classic-1.5.16.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.5.16/logback-core-1.5.16.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.24.3/log4j-to-slf4j-2.24.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.24.3/log4j-api-2.24.3.jar:/root/.m2/repository/org/slf4j/jul-to-slf4j/2.0.16/jul-to-slf4j-2.0.16.jar:/root/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/root/.m2/repository/org/yaml/snakeyaml/2.3/snakeyaml-2.3.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-json/3.4.2/spring-boot-starter-json-3.4.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.18.2/jackson-databind-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.18.2/jackson-annotations-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.18.2/jackson-core-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.18.2/jackson-datatype-jdk8-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.18.2/jackson-datatype-jsr310-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.18.2/jackson-module-parameter-names-2.18.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/3.4.2/spring-boot-starter-tomcat-3.4.2.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.34/tomcat-embed-core-10.1.34.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.34/tomcat-embed-el-10.1.34.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.34/tomcat-embed-websocket-10.1.34.jar:/root/.m2/repository/org/springframework/spring-web/6.2.2/spring-web-6.2.2.jar:/root/.m2/repository/org/springframework/spring-beans/6.2.2/spring-beans-6.2.2.jar:/root/.m2/repository/io/micrometer/micrometer-observation/1.14.3/micrometer-observation-1.14.3.jar:/root/.m2/repository/io/micrometer/micrometer-commons/1.14.3/micrometer-commons-1.14.3.jar:/root/.m2/repository/org/springframework/spring-webmvc/6.2.2/spring-webmvc-6.2.2.jar:/root/.m2/repository/org/springframework/spring-aop/6.2.2/spring-aop-6.2.2.jar:/root/.m2/repository/org/springframework/spring-context/6.2.2/spring-context-6.2.2.jar:/root/.m2/repository/org/springframework/spring-expression/6.2.2/spring-expression-6.2.2.jar:/root/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar:/root/.m2/repository/org/springframework/spring-core/6.2.2/spring-core-6.2.2.jar:/root/.m2/repository/org/springframework/spring-jcl/6.2.2/spring-jcl-6.2.2.jar:/project/target/classes:/root/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.4.2/spring-boot-starter-web-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter/3.4.2/spring-boot-starter-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot/3.4.2/spring-boot-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.4.2/spring-boot-autoconfigure-3.4.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/3.4.2/spring-boot-starter-logging-3.4.2.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.5.16/logback-classic-1.5.16.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.5.16/logback-core-1.5.16.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.24.3/log4j-to-slf4j-2.24.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.24.3/log4j-api-2.24.3.jar:/root/.m2/repository/org/slf4j/jul-to-slf4j/2.0.16/jul-to-slf4j-2.0.16.jar:/root/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/root/.m2/repository/org/yaml/snakeyaml/2.3/snakeyaml-2.3.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-json/3.4.2/spring-boot-starter-json-3.4.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.18.2/jackson-databind-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.18.2/jackson-annotations-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.18.2/jackson-core-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.18.2/jackson-datatype-jdk8-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.18.2/jackson-datatype-jsr310-2.18.2.jar:/root/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.18.2/jackson-module-parameter-names-2.18.2.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/3.4.2/spring-boot-starter-tomcat-3.4.2.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.34/tomcat-embed-core-10.1.34.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.34/tomcat-embed-el-10.1.34.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.34/tomcat-embed-websocket-10.1.34.jar:/root/.m2/repository/org/springframework/spring-web/6.2.2/spring-web-6.2.2.jar:/root/.m2/repository/org/springframework/spring-beans/6.2.2/spring-beans-6.2.2.jar:/root/.m2/repository/io/micrometer/micrometer-observation/1.14.3/micrometer-observation-1.14.3.jar:/root/.m2/repository/io/micrometer/micrometer-commons/1.14.3/micrometer-commons-1.14.3.jar:/root/.m2/repository/org/springframework/spring-webmvc/6.2.2/spring-webmvc-6.2.2.jar:/root/.m2/repository/org/springframework/spring-aop/6.2.2/spring-aop-6.2.2.jar:/root/.m2/repository/org/springframework/spring-context/6.2.2/spring-context-6.2.2.jar:/root/.m2/repository/org/springframework/spring-expression/6.2.2/spring-expression-6.2.2.jar:/root/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar:/root/.m2/repository/org/springframework/spring-core/6.2.2/spring-core-6.2.2.jar:/root/.m2/repository/org/springframework/spring-jcl/6.2.2/spring-jcl-6.2.2.jar --no-fallback -o /project/target/pangrams -H:ConfigurationFileDirectories=/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/org.apache.tomcat.embed/tomcat-embed-core/10.0.20,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/ch.qos.logback/logback-classic/1.4.9,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/com.fasterxml.jackson.core/jackson-databind/2.15.2,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/com.fasterxml.jackson.core/jackson-databind/2.15.2,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/org.apache.tomcat.embed/tomcat-embed-core/10.0.20,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/ch.qos.logback/logback-classic/1.4.9,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/ch.qos.logback/logback-classic/1.4.9,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/org.apache.tomcat.embed/tomcat-embed-core/10.0.20,/project/target/graalvm-reachability-metadata/3ba69a355acd7f3fb246c1c23f992ebe8d2610d/com.fasterxml.jackson.core/jackson-databind/2.15.2 -O0 -g --verbose -H:+UnlockExperimentalVMOptions -H:ReflectionConfigurationFiles=reflection-config.json --initialize-at-build-time=org.demo.graalvm.PangramController --native-compiler-options=-fno-inline -H:+UnlockExperimentalVMOptions -H:+TraceNativeToolUsage -H:NativeLinkerOption=-Wl,-u,_ZN16java.lang.System6getenvEJP13java.util.Mapv -H:NativeLinkerOption=/project/target/expression.o -H:NativeLinkerOption=-Wl,-u,expression org.demo.graalvm.Application

Expected Behavior

$4 = 0x29a0e90 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=23.0.2"
$5 = 0x29a0ec0 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 23.0.2+7.1"
$6 = 0xfffff655d440 "[B"
$7 = 0xfffff5ad28c0 "java.lang.Class"

Actual Behavior

$4 = 0x29a0e90 <__svm_vm_java_version> "com.oracle.svm.core.VM.Java.Version=23.0.2"
$5 = 0x29a0ec0 <__svm_version_info> "com.oracle.svm.core.VM=GraalVM CE 23.0.2+7.1"
$6 = 0x100054a7d4067 <error: Cannot access memory at address 0x100054a7d4067>
src/main/gdb/detection.gdb:4: Error in sourced command file:
Location address is not set.

Steps to Reproduce

  1. build docker image with graal vm 23 (tag oracle-graalvm:23)
  2. build application docker run --rm --entrypoint= -v $(pwd):/project -v $(pwd)/_m2:/root/.m2 -w /project oracle-graalvm:23 mvn -P native package
  3. run application in docker with port forwarding for 8080 and port assigned to gdbserver
  4. run gdbserver in container
  5. attach with gdb
  6. run gdb script above

Additional Context

No response

Build Log Output and Error Messages

No response

@fniephaus
Copy link
Member

Thanks for raising this, @vvlevchenko.

I'm afraid the last release of GraalVM for JDK 23 came out in January (version 23.0.2) and this release train is no longer in maintenance, so there's unfortunately no way for us to ship a fix for this.
But good to see we have already fixed this in the JDK 24 release!

To protect from regressions like this, maybe you could add test cases to our GDB debugging test?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants
0