Our CI has detected a regression in this merge that includes a few commits: https://github.com/oracle/graal/commit/9df8ca97ca95b14900be534b42a49d011049af93
Steps to reproduce the issue:
git clone https://github.com/micronaut-graal-tests/micronaut-views-graalcd micronaut-views-graalgit checkout freemarker19.3.0-dev)../build-native-image.shError:
[views-graal-freemarker:22045] classlist: 6,434.62 ms
[views-graal-freemarker:22045] (cap): 1,100.23 ms
[views-graal-freemarker:22045] setup: 2,976.55 ms
[views-graal-freemarker:22045] (typeflow): 44,531.88 ms
[views-graal-freemarker:22045] (objects): 29,407.44 ms
[views-graal-freemarker:22045] (features): 3,375.85 ms
[views-graal-freemarker:22045] analysis: 82,267.75 ms
[views-graal-freemarker:22045] (clinit): 1,586.56 ms
[views-graal-freemarker:22045] universe: 4,128.46 ms
[views-graal-freemarker:22045] (parse): 8,019.48 ms
[views-graal-freemarker:22045] (inline): 12,270.14 ms
[views-graal-freemarker:22045] (compile): 58,544.11 ms
[views-graal-freemarker:22045] compile: 82,939.15 ms
[views-graal-freemarker:22045] image: 6,340.81 ms
[views-graal-freemarker:22045] write: 1,160.36 ms
Fatal error: java.lang.RuntimeException: java.lang.RuntimeException: host C compiler or linker does not seem to work: java.lang.RuntimeException: returned 1
Running command: cc -v -o /home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker -z noexecstack -Wl,--gc-sections -Wl,--dynamic-list -Wl,/tmp/SVM-4755219843864132119/exported_symbols.list -Wl,-x -L/tmp/SVM-4755219843864132119 -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64 /tmp/SVM-4755219843864132119/views-graal-freemarker.o /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libffi.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libstrictmath.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libjvm.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnet.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libzip.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libjava.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnio.a -lm -lpthread -ldl -lpthread -lrt
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04.1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' '/home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker' '-z' 'noexecstack' '-L/tmp/SVM-4755219843864132119' '-L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib' '-L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjalO10.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 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o /home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker -z noexecstack /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/tmp/SVM-4755219843864132119 -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64 -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. --gc-sections --dynamic-list /tmp/SVM-4755219843864132119/exported_symbols.list -x /tmp/SVM-4755219843864132119/views-graal-freemarker.o /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libffi.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libstrictmath.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libjvm.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnet.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libzip.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libjava.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnio.a -lm -lpthread -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/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x40): undefined reference to `Java_java_lang_Thread_resume0'
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x150): undefined reference to `Java_java_lang_Thread_stop0'
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x3b8): undefined reference to `Java_java_lang_Thread_suspend0'
collect2: error: ld returned 1 exit status
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:464)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:315)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:454)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:115)
Caused by: java.lang.RuntimeException: host C compiler or linker does not seem to work: java.lang.RuntimeException: returned 1
Running command: cc -v -o /home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker -z noexecstack -Wl,--gc-sections -Wl,--dynamic-list -Wl,/tmp/SVM-4755219843864132119/exported_symbols.list -Wl,-x -L/tmp/SVM-4755219843864132119 -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64 /tmp/SVM-4755219843864132119/views-graal-freemarker.o /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libffi.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libstrictmath.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libjvm.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnet.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libzip.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libjava.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnio.a -lm -lpthread -ldl -lpthread -lrt
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04.1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/7/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' '/home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker' '-z' 'noexecstack' '-L/tmp/SVM-4755219843864132119' '-L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib' '-L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjalO10.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 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o /home/ivan/workspaces/micronaut-graal-tests/micronaut-views-graal/views-graal-freemarker -z noexecstack /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o -L/tmp/SVM-4755219843864132119 -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib -L/home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64 -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. --gc-sections --dynamic-list /tmp/SVM-4755219843864132119/exported_symbols.list -x /tmp/SVM-4755219843864132119/views-graal-freemarker.o /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libffi.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/liblibchelper.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libstrictmath.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libjvm.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnet.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libzip.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libjava.a /home/ivan/workspaces/misc/graal/graal/vm/mxbuild/linux-amd64/GRAALVM_UNKNOWN_JAVA8/graalvm-unknown-java8-19.3.0-dev/jre/lib/libnio.a -lm -lpthread -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/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x40): undefined reference to `Java_java_lang_Thread_resume0'
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x150): undefined reference to `Java_java_lang_Thread_stop0'
/tmp/SVM-4755219843864132119/views-graal-freemarker.o:(.data+0x3b8): undefined reference to `Java_java_lang_Thread_suspend0'
collect2: error: ld returned 1 exit status
at com.oracle.svm.hosted.image.NativeBootImageViaCC.write(NativeBootImageViaCC.java:372)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:654)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:447)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Image build request failed with exit status 1
@ilopmar thanks for the detailed steps to reproduce. I'll take a look.
First, the fix is simple and I will merge that shortly:
diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/PlatformNativeLibrarySupport.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/PlatformNativeLibrarySupport.java
index ba2f2881e64..f0a5144f909 100644
--- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/PlatformNativeLibrarySupport.java
+++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/PlatformNativeLibrarySupport.java
@@ -80,7 +81,10 @@ public abstract class PlatformNativeLibrarySupport {
private static final String[] defaultBuiltInPkgNativesBlacklist = {
"sun_security_krb5_SCDynamicStoreConfig_getKerberosConfig",
- "sun_security_krb5_Config_getWindowsDirectory"
+ "sun_security_krb5_Config_getWindowsDirectory",
+ "java_lang_Thread_resume0",
+ "java_lang_Thread_suspend0",
+ "java_lang_Thread_stop0"
};
public static PlatformNativeLibrarySupport singleton() {
But that particular image build is in questionable state nonetheless. If you build with -H:+PrintAnalysisCallTree you see that freemarker.template.TemplateException.printStackTrace(freemarker.template.TemplateException$StackTraceWriter, boolean, boolean, boolean) makes use of java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) which drags in every possible reflective method invocation. Among these there are also
├── is implemented by com.oracle.svm.reflect.Thread_resume_2c543f4aee4cf674d406dcc822d39992bfa35079.invoke(java.lang.Object, java.lang.Object[]):java.lang.Object id=27207
. ├── directly calls com.oracle.svm.reflect.helpers.ExceptionHelpers.createFailedCast(java.lang.Class, java.lang.Object):java.lang.IllegalArgumentException id-ref=20463 @bci=1
. ├── directly calls java.lang.Thread.resume():void id=34062 @bci=3
. ├── directly calls java.lang.Thread.checkAccess():void id-ref=12651 @bci=4
. └── directly calls java.lang.Thread.resume0():void id=41193 @bci=8
So even before we merged 9df8ca9 this would not have worked at image runtime, because we do not support java_lang_Thread_resume0/suspend0/stop0. The difference is that now we are trying to link those native implementation functions at image built time (instead of trying (and failing) to dlsym them at image runtime.
The use of -H:-ReportUnsupportedElementsAtRuntime prevents such issues to be detected at image build time. (In your case it comes from META-INF/native-image/io.micronaut/inject/native-image.properties) Please try to avoid using it. It's meant to be used to get things running but it cannot replace a proper native image config.
Thanks for the quick fix!
Your recommendation is that we need to remove -H:-ReportUnsupportedElementsAtRuntime from Micronaut so avoid creating native-images that then will fail at runtime, right? Without that option the native-image generation will fail if everything is not properly configured/supported, right?
Without that option the native-image generation will fail if everything is not properly configured/supported, right?
Correct.
Fixed on master: 5f2c7df7a70c7e4ea5d8796dabcdf9b40fc09e84
Yeah, the build passed again last night: https://gitlab.com/micronaut-projects/micronaut-graal-tests/-/jobs/316533141
Thanks! :100:
@olpaw Removing the flag you suggested yesterday has broken all our apps (take a look at "Micronaut" stage): https://gitlab.com/micronaut-projects/micronaut-graal-tests/pipelines/87885074
The error message is similar in all the apps, something like:
Error: Unsupported features in 2 methods
Detailed message:
Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.getClassLoader(Class) is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
To diagnose the issue, you can add the option --report-unsupported-elements-at-runtime. The unsupported element is then reported at run time when it is accessed the first time.
I'll try to get more information with -H:+ReportExceptionStackTraces, --report-unsupported-elements-at-runtime and probably -H:+TraceClassInitialization to see if I can fix everything.
@olpaw Removing the flag you suggested yesterday has broken all our apps
That was to be expected. :-)
ClassLoader usage has no place inside an image. See https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md#dynamic-class-loading--unloading
Note that you can use NativeImage API to "cut off" certain aspects of you application that cannot be supported in native-images. See https://www.graalvm.org/sdk/javadoc/org/graalvm/nativeimage/ImageInfo.html (Note that if you do not want to add a dependency to graal-sdk you can alternatively query the same info via System.getProperty(String).
I'll try to get more information with -H:+ReportExceptionStackTraces, --report-unsupported-elements-at-runtime and probably -H:+TraceClassInitialization to see if I can fix everything
In addition to that -H:+PrintAnalysisCallTree is very useful to find out why something gets dragged in by the static analysis.
HTH
OK, so can can I ask how a change to remove a flag that supposed to activate more diagnostics and logging has broken the entire integration between Micronaut and GraalVM substrate?
OK, so can can I ask how a change to remove a flag that supposed to activate more diagnostics
Report usage of unsupported methods and fields at run time when they are accessed the first time, instead of as an error during image building.
It means there are currently code paths seen by the static analysis that are in reality never taken at image runtime. The fact that running these images worked so far gives testimony to that. This is suboptimal because it means that your image could likely be smaller. Code gets AOT-compiled that is never used at image runtime. If you manage to build your application/library without --report-unsupported-elements-at-runtime you can be much more confident that the image contains only what is really necessary.
Note that for large codebases - like in your example - making your configs clean enough to work without --report-unsupported-elements-at-runtime is likely not something that you can fix over night.
I would encourage the GraalVM team to rename the flag to something else. The name --report-unsupported-elements-at-runtime indicates to me that it is providing a report and not altering the behaviour of the application. The name of the current flag is, in my opinion, misleading and will lead others to a confusing end such is the case here.
Note that for large codebases - like in your example - making your configs clean enough to work without --report-unsupported-elements-at-runtime is likely not something that you can fix over night.
This was actually the only change required for Micronaut itself (we have one failure related to use of a third party JSON library) so almost over night 😉
https://github.com/micronaut-projects/micronaut-core/commit/7d1fefbdf81178b5c669fb1c671110de22d43372
We have only one example application failing in the test suite now and it relates the use of the H2 in-memory database. See https://gitlab.com/micronaut-projects/micronaut-graal-tests/pipelines/88169755
It fails with the error:
Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method sun.util.locale.provider.LocaleServiceProviderPool.getAvailableLocales() is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
To diagnose the issue, you can add the option --report-unsupported-elements-at-runtime. The unsupported element is then reported at run time when it is accessed the first time.
Detailed message:
Trace:
at parsing java.text.Collator.getAvailableLocales(Collator.java:432)
Call path from entry point to java.text.Collator.getAvailableLocales():
at java.text.Collator.getAvailableLocales(Collator.java:430)
at org.h2.value.CompareMode.getCollator(CompareMode.java:253)
at org.h2.value.CompareModeDefault.<init>(CompareModeDefault.java:25)
at org.h2.value.CompareMode.getInstance(CompareMode.java:147)
at org.h2.value.CompareMode.getInstance(CompareMode.java:106)
at org.h2.engine.SessionRemote.<init>(SessionRemote.java:96)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
at org.h2.Driver.connect(Driver.java:69)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
at org.apache.tomcat.jdbc.pool.PooledConnection.reconnect(PooledConnection.java:372)
The application can be made to work again by adding --report-unsupported-elements-at-runtime in which cases the image build succeeds and the application behaves correctly at runtime.
However, this is of course what you told us not to do. Now this is application code relates to the H2 database project https://www.h2database.com/html/main.html
Not something we can really change nor adapt. So what do you recommend in this scenario? We document that users should add said flag when using H2 database? Or is this a bug?
We document that users should add said flag when using H2 database? Or is this a bug
That looks like something we should fix on our side. native-image should be fine with Collator.getAvailableLocales(). @christianwimmer do you agree?
@graemerocher your investigations also bring us to the question if - in addition to --report-unsupported-elements-at-runtime - we should add something like
--report-unsupported-elements-at-runtime=<comma-separated list of packages and classes>
as an accumulative option so that users can contain/isolate the effect of --report-unsupported-elements-at-runtime to specific (not yet sanitized) sub-package hierarchies. cc @cstancu @christianwimmer
Seems like it might be a good idea given the flag has unwanted side effects for other classes/packages
@olpaw do you want me to file a new issue to track the H2 problem with Micronaut?
@ilopmar that would be nice.
Issue created: https://github.com/oracle/graal/issues/1743
Most helpful comment
This was actually the only change required for Micronaut itself (we have one failure related to use of a third party JSON library) so almost over night 😉
https://github.com/micronaut-projects/micronaut-core/commit/7d1fefbdf81178b5c669fb1c671110de22d43372