-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
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.
- I tried with the latest version of GraalVM.
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
- build docker image with graal vm 23 (tag oracle-graalvm:23)
- build application
docker run --rm --entrypoint= -v $(pwd):/project -v $(pwd)/_m2:/root/.m2 -w /project oracle-graalvm:23 mvn -P native package - run application in docker with port forwarding for 8080 and port assigned to gdbserver
- run gdbserver in container
- attach with gdb
- run gdb script above
Additional Context
No response
Build Log Output and Error Messages
No response