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

quarkus is not compatible with graalvm 21 #36055

Closed
youngcle opened this issue Sep 21, 2023 · 5 comments
Closed

quarkus is not compatible with graalvm 21 #36055

youngcle opened this issue Sep 21, 2023 · 5 comments
Labels
area/native-image kind/bug Something isn't working

Comments

@youngcle
Copy link

youngcle commented Sep 21, 2023

Describe the bug

Oracle released Java 21 and also GraalVM 21 on 2023-09-19, and I switch my app jdk to Oracle GraalVM 21 to do some native-image test.

before I turned to GraalVM 21, I'm with GraalVM 17.0.8+9.1 (build 17.0.8+9-LTS-jvmci-23.0-b14) and everything is right in X86 (ubuntu 2210) and arm (ubuntu 1804 in Qemu) both.

after switched, JVM version package goes well.

the Native image in X86,compiler complaint the following message:

java.lang.IllegalAccessError: class io.quarkus.runner.Feature (in unnamed module @0x6cf0a747) cannot access class org.graalvm.nativeimage.impl.RuntimeClassInitializationSupport (in module org.graalvm.nativeimage) because module org.graalvm.nativeimage does not export org.graalvm.nativeimage.impl to unnamed module @0x6cf0a747

but it do not fail the compile process, and the native-image runner goes well (likely)

When I try to make the native image in ARM, compiler failed at the last step "creating image" with message"

java.lang.RuntimeException: There was an error linking the native image: Linker command exited with 1

Linker command executed:
/usr/bin/gcc -z noexecstack -Wl,--gc-sections -Wl,--version-script,/tmp/SVM-13567779887183742065/exported_symbols.list -Wl,-x -o /data/cast503/develop/develop/sat-scheduler-edge/edge-command/target/edge-command-1.0.0-SNAPSHOT-native-image-source-jar/edge-command-1.0.0-SNAPSHOT-runner edge-command-1.0.0-SNAPSHOT-runner.o /root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/liblibchelper.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libnet.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libextnet.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libnio.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libmanagement_ext.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libjava.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libzip.a /root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/libjvm.a -Wl,--export-dynamic -v -L/tmp/SVM-13567779887183742065 -L/root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc -L/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64 -lg1gc-cr -ldl -lm -lpthread -lstdc++ -lz -ldl -lpthread -lrt -no-pie

Linker command output:
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 
COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/../../../../lib/:/lib/aarch64-linux-gnu/:/lib/../lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/aarch64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-z' 'noexecstack' '-o' '/data/cast503/develop/develop/sat-scheduler-edge/edge-command/target/edge-command-1.0.0-SNAPSHOT-native-image-source-jar/edge-command-1.0.0-SNAPSHOT-runner' '-v' '-L/tmp/SVM-13567779887183742065' '-L/root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc' '-L/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64' '-no-pie' '-mlittle-endian' '-mabi=lp64'
 /usr/lib/gcc/aarch64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccRS9L0e.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -z relro -o /data/cast503/develop/develop/sat-scheduler-edge/edge-command/target/edge-command-1.0.0-SNAPSHOT-native-image-source-jar/edge-command-1.0.0-SNAPSHOT-runner -z noexecstack /usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/crt1.o /usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/7/crtbegin.o -L/tmp/SVM-13567779887183742065 -L/root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc -L/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64 -L/usr/lib/gcc/aarch64-linux-gnu/7 -L/usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/7/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/7/../../.. --gc-sections --version-script /tmp/SVM-13567779887183742065/exported_symbols.list -x edge-command-1.0.0-SNAPSHOT-runner.o /root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/liblibchelper.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libnet.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libextnet.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libnio.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libmanagement_ext.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libjava.a /root/graalvm-jdk-21+35.1/lib/static/linux-aarch64/glibc/libzip.a /root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/libjvm.a --export-dynamic -lg1gc-cr -ldl -lm -lpthread -lstdc++ -lz -ldl -lpthread -lrt -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/aarch64-linux-gnu/7/crtend.o /usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/crtn.o
/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/liblibchelper.a(cSunMiscSignal.o): In function `cSunMiscSignal_atomicIncrement':
graal/substratevm/mxbuild/linux-aarch64/com.oracle.svm.native.libchelper/aarch64/graal/substratevm/src/com.oracle.svm.native.libchelper/src/cSunMiscSignal.c:247: undefined reference to `__aarch64_ldadd8_acq_rel'
/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/liblibchelper.a(cSunMiscSignal.o): In function `cSunMiscSignal_atomicCompareAndSwap_int':
graal/substratevm/mxbuild/linux-aarch64/com.oracle.svm.native.libchelper/aarch64/graal/substratevm/src/com.oracle.svm.native.libchelper/src/cSunMiscSignal.c:273: undefined reference to `__aarch64_cas4_acq_rel'
/root/graalvm-jdk-21+35.1/lib/svm/clibraries/linux-aarch64/liblibchelper.a(cSunMiscSignal.o): In function `cSunMiscSignal_atomicCompareAndSwap_long':
graal/substratevm/mxbuild/linux-aarch64/com.oracle.svm.native.libchelper/aarch64/graal/substratevm/src/com.oracle.svm.native.libchelper/src/cSunMiscSignal.c:278: undefined reference to `__aarch64_cas8_acq_rel'
collect2: error: ld returned 1 exit status
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.handleLinkerFailure(NativeImageViaCC.java:202)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.runLinkerCommand(NativeImageViaCC.java:152)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageViaCC.write(NativeImageViaCC.java:118)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:742)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:551)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:538)
	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)

Expected behavior

compitable with graalvm 21

finish the build of native-image runner in x86 and arm, peaceful and quietly,just like GraalVM 17.

Actual behavior

graalvm 21

  • native image in x86 successed with warn, and goes well(likely)

  • native image in arm failed at last step "creating image".

Output of uname -a or ver

x86
6.2.0-33-generic #33~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Sep 7 10:33:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

arm by qemu
Linux ubuntu 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:29:44 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

Output of java -version

x86
Java(TM) SE Runtime Environment Oracle GraalVM 21+35.1 (build 21+35-jvmci-23.1-b15)

arm by qemu
Java(TM) SE Runtime Environment Oracle GraalVM 21+35.1 (build 21+35-jvmci-23.1-b15)

Quarkus version or git rev

Powered by Quarkus 3.3.3

No response

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.8.7

@youngcle youngcle added the kind/bug Something isn't working label Sep 21, 2023
@youngcle
Copy link
Author

youngcle commented Sep 21, 2023

The warn in X86 native-image build, I found the reason is that Oracle removed the org.graalvm.sdk and splitted into some individual package in GraalVM 21.

although the build can goes to the end , the native image runner goes well in my common test case(likely)
I'm not sure there are no problem in other routines.

@rsvoboda
Copy link
Member

rsvoboda commented Sep 21, 2023

Can you try Quarkus 3.4.1 (just released)? I think #35377 could handle the trouble on x86_64.
(I tried my app with 21-graalce from sdkman and native compilation worked without any IllegalAccessError)

@youngcle
Copy link
Author

Can you try Quarkus 3.4.1 (just released)? I think #35377 could handle the trouble on x86_64. (I tried my app with 21-graalce from sdkman and native compilation worked without any IllegalAccessError)

yes, I believe Quarkus 3.4.1 has fixed the warn on x86. I'll give it a try tomorrow.

@youngcle
Copy link
Author

I switched quarkus 3.4.1 and compile finished smoothly,the warns has been cleaned .

the fails on arm ubuntu1804 are still there, I issued that error to graalvm too.

@youngcle
Copy link
Author

youngcle commented Sep 25, 2023

the link fail problem on ubuntu 1804 was solved, a guy there gived a right solution

this issue should be closed.

oracle/graal/7467

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/native-image kind/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants