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

Fail to build Micronaut Micrometer (CloudWatch) native image without --report-unsupported-elements-at-runtime: DeletedElementException #2736

Closed
ilopmar opened this issue Aug 5, 2020 · 1 comment
Assignees

Comments

@ilopmar
Copy link

ilopmar commented Aug 5, 2020

Describe the issue

Native image creation for a Micronaut app with Micrometer CloudWatch fails unless we use --report-unsupported-elements-at-runtime.

Steps to reproduce the issue

  • git clone https://github.com/micronaut-core-issues-test-app/mn-micrometer-graal
  • cd mn-micrometer-graal
  • Use GraalVM from master branch
  • ./build-native-image.sh

Describe GraalVM and your environment:

  • GraalVM version (latest snapshot builds can be found here), or commit id if built from source: 20.1.0 and master branch (473d09c)
  • JDK major version: 8
  • OS: Linux Mint 20
  • Architecture: AMD64

More details

Error:

Apply jar:file:///home/ivan/workspaces/micronaut-graal-tests/micronaut-micrometer-cloudwatch-graal/build/libs/mn-micrometer-cloudwatch-graal-0.1-all.jar!/META-INF/native-image/io.micronaut/http/resource-config.json
Apply jar:file:///home/ivan/workspaces/micronaut-graal-tests/micronaut-micrometer-cloudwatch-graal/build/libs/mn-micrometer-cloudwatch-graal-0.1-all.jar!/META-INF/native-image/example.micronaut/mn-micrometer-cloudwatch-graal/resource-config.json
Executing [
/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/bin/java \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-d64 \
-XX:-UseJVMCIClassLoader \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx14g \
-Duser.country=US \
-Duser.language=en \
-Djava.awt.headless=true \
-Dorg.graalvm.version=20.3.0-dev \
-Dorg.graalvm.config= \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djvmci.class.path.append=/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/graal.jar \
-javaagent:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/svm.jar=traceInitialization \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
-Xbootclasspath/a:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/boot/graal-sdk.jar \
-cp \
/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/svm.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/objectfile.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/pointsto.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/svm-llvm.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/llvm-platform-specific-shadowed.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/javacpp-shadowed.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/builder/llvm-wrapper-shadowed.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/graal-truffle-jfr-impl.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/jvmci-hotspot.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/graal-management.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/jvmci-api.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/jvmci/graal.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/resources.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner \
-watchpid \
73803 \
-imagecp \
/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/boot/graal-sdk.jar:/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/library-support.jar:/home/ivan/workspaces/micronaut-graal-tests/micronaut-micrometer-cloudwatch-graal/build/libs/mn-micrometer-cloudwatch-graal-0.1-all.jar \
-H:Path=/home/ivan/workspaces/micronaut-graal-tests/micronaut-micrometer-cloudwatch-graal \
-H:FallbackThreshold=0 \
-H:ClassInitialization=io.netty.util.AbstractReferenceCounted:run_time,io.netty.util.concurrent.GlobalEventExecutor:run_time,io.netty.util.concurrent.ImmediateEventExecutor:run_time,io.netty.util.concurrent.ScheduledFutureTask:run_time,io.netty.util.internal.ThreadLocalRandom:run_time \
-H:ClassInitialization=io.netty.buffer.PooledByteBufAllocator:run_time,io.netty.buffer.ByteBufAllocator:run_time,io.netty.buffer.ByteBufUtil:run_time,io.netty.buffer.AbstractReferenceCountedByteBuf:run_time \
-H:ReflectionConfigurationResources=META-INF/native-image/io.netty/transport/reflection-config.json \
-H:ClassInitialization=io.netty.handler.ssl.util.ThreadLocalInsecureRandom:run_time \
-H:ClassInitialization=io.netty.handler.codec.http.HttpObjectEncoder:run_time,io.netty.handler.codec.http.websocketx.WebSocket00FrameEncoder:run_time,io.netty.handler.codec.http.websocketx.extensions.compression.DeflateDecoder:run_time \
-H:ClassInitialization=io.netty:build_time \
-H:ClassInitialization=io.netty.handler.codec.http2.Http2CodecUtil:run_time,io.netty.handler.codec.http2.Http2ClientUpgradeCodec:run_time,io.netty.handler.codec.http2.Http2ConnectionHandler:run_time,io.netty.handler.codec.http2.DefaultHttp2FrameWriter:run_time \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut.core/cache-caffeiene-graal/reflection-config.json \
-H:IncludeResources=META-INF/http/mime.types \
-H:ClassInitialization=io.micronaut.http.bind.binders.ContinuationArgumentBinder:run_time \
-H:+AllowIncompleteClasspath \
-H:EnableURLProtocols=http,https \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/http/reflection-config.json \
'-H:ClassInitialization=com.sun.jndi.dns.DnsClient:run_time,io.netty.handler.ssl.ConscryptAlpnSslEngine:run_time,io.netty.handler.ssl.JettyNpnSslEngine:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslEngine:run_time,io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslServerContext:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslClientContext:run_time,io.netty.handler.ssl.util.BouncyCastleSelfSignedCertGenerator:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslContext:run_time,io.micronaut.buffer.netty.NettyByteBufferFactory:run_time,io.netty.handler.ssl.JettyAlpnSslEngine$ClientEngine:run_time,io.netty.handler.ssl.JettyAlpnSslEngine$ServerEngine:run_time,io.netty.handler.codec.http2.Http2CodecUtil:run_time,io.netty.handler.codec.http2.CleartextHttp2ServerUpgradeHandler:run_time,io.netty.handler.codec.http2.Http2ServerUpgradeCodec:run_time,io.micronaut.http.netty.channel.converters.EpollChannelOptionFactory:run_time,io.micronaut.http.netty.channel.converters.KQueueChannelOptionFactory:run_time,io.micronaut.http.bind.binders.ContinuationArgumentBinder$Companion:run_time,io.micronaut.http.bind.binders.ContinuationArgumentBinder:run_time' \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/http-netty/reflection-config.json \
-H:ClassInitialization=io.micronaut.reactive.reactor.ReactorInstrumentation:run_time \
-H:ClassInitialization=ch.qos.logback:build_time,com.fasterxml.jackson:build_time,io.micronaut:build_time,io.reactivex:build_time,org.reactivestreams:build_time,org.slf4j:build_time,org.yaml.snakeyaml:build_time,javax:build_time \
-H:ClassInitialization=com.sun.org.apache.xerces.internal.util:build_time,com.sun.org.apache.xerces.internal.impl:build_time,jdk.xml.internal:build_time,com.sun.xml.internal.stream.util:build_time,com.sun.org.apache.xerces.internal.xni:build_time,com.sun.org.apache.xerces.internal.utils:build_time \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/health/reflection-config.json \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/http-server-netty/reflection-config.json \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/management-endpoint/reflection-config.json \
-H:ReflectionConfigurationResources=META-INF/native-image/io.micronaut/configuration-metrics-management-endpoint/reflection-config.json \
-H:ClassInitialization=io.micrometer.core:build_time \
-H:ClassInitialization=io.micrometer.cloudwatch:build_time \
-H:Name=mn-micrometer-cloudwatch-graal \
-H:Class=example.micronaut.Application \
-H:+ReportExceptionStackTraces \
-H:+TraceClassInitialization \
-H:+DumpTargetInfo \
-H:ResourceConfigurationResources=META-INF/native-image/io.micronaut/http/resource-config.json \
-H:ResourceConfigurationResources=META-INF/native-image/example.micronaut/mn-micrometer-cloudwatch-graal/resource-config.json \
-H:CLibraryPath=/home/ivan/workspaces/misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/clibraries/linux-amd64 \

]
[mn-micrometer-cloudwatch-graal:73820]    classlist:   7,925.15 ms,  2.04 GB
[mn-micrometer-cloudwatch-graal:73820]        (cap):   1,567.03 ms,  2.04 GB
[mn-micrometer-cloudwatch-graal:73820]        setup:   3,828.12 ms,  2.04 GB
# Building image for target platform: org.graalvm.nativeimage.Platform$LINUX_AMD64
# Using native toolchain:
#   Name: GNU project C and C++ compiler (gcc)
#   Vendor: linux
#   Version: 9.3.0
#   Target architecture: x86_64
#   Path: /usr/bin/gcc
# Using CLibrary: com.oracle.svm.core.posix.linux.libc.GLibC
16:09:34.886 [ForkJoinPool-2-worker-1] DEBUG i.m.c.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
[mn-micrometer-cloudwatch-graal:73820]     (clinit):   1,373.78 ms,  5.26 GB
# Static libraries:
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/clibraries/linux-amd64/liblibchelper.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libnet.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libffi.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libnio.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libjava.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libfdlibm.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libsunec.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/libzip.a
#   ../../../misc/graal/graal/sdk/mxbuild/linux-amd64/GRAALVM_BCF68E8E09_JAVA8/graalvm-bcf68e8e09-java8-20.3.0-dev/jre/lib/svm/clibraries/linux-amd64/libjvm.a
# Other libraries: stdc++,pthread,dl,z,rt
[mn-micrometer-cloudwatch-graal:73820]   (typeflow):  41,055.20 ms,  5.26 GB
[mn-micrometer-cloudwatch-graal:73820]    (objects):  34,204.34 ms,  5.26 GB
[mn-micrometer-cloudwatch-graal:73820]   (features):   6,165.59 ms,  5.26 GB
[mn-micrometer-cloudwatch-graal:73820]     analysis:  86,450.18 ms,  5.26 GB
Error: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass1(String, byte[], int, int, ProtectionDomain, String) is reachable
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.lang.ClassLoader.defineClass(ClassLoader.java:756)
Call path from entry point to java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain): 
	at java.lang.ClassLoader.defineClass(ClassLoader.java:754)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
	at com.oracle.svm.reflect.ClassLoader_defineClass_c6c343b4d6dc22ca64eb2d8503b13ac9c340dcb3_1761.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.oracle.svm.core.hub.DynamicHub.initEnumConstantsAtRuntime(DynamicHub.java:477)
	at com.oracle.svm.core.hub.DynamicHub.lambda$initEnumConstantsAtRuntime$1(DynamicHub.java:457)
	at com.oracle.svm.core.hub.DynamicHub$$Lambda$548/745267158.get(Unknown Source)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:190)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:143)
	at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:331)
	at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VARARGS:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0)

com.oracle.svm.core.util.UserError$UserException: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass1(String, byte[], int, int, ProtectionDomain, String) is reachable
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.lang.ClassLoader.defineClass(ClassLoader.java:756)
Call path from entry point to java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain): 
	at java.lang.ClassLoader.defineClass(ClassLoader.java:754)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
	at com.oracle.svm.reflect.ClassLoader_defineClass_c6c343b4d6dc22ca64eb2d8503b13ac9c340dcb3_1761.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.oracle.svm.core.hub.DynamicHub.initEnumConstantsAtRuntime(DynamicHub.java:477)
	at com.oracle.svm.core.hub.DynamicHub.lambda$initEnumConstantsAtRuntime$1(DynamicHub.java:457)
	at com.oracle.svm.core.hub.DynamicHub$$Lambda$548/745267158.get(Unknown Source)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:190)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:143)
	at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:331)
	at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VARARGS:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0)

	at com.oracle.svm.core.util.UserError.abort(UserError.java:79)
	at com.oracle.svm.hosted.FallbackFeature.reportAsFallback(FallbackFeature.java:217)
	at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:765)
	at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:555)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:468)
	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)
Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass1(String, byte[], int, int, ProtectionDomain, String) is reachable
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.lang.ClassLoader.defineClass(ClassLoader.java:756)
Call path from entry point to java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain): 
	at java.lang.ClassLoader.defineClass(ClassLoader.java:754)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:635)
	at com.oracle.svm.reflect.ClassLoader_defineClass_c6c343b4d6dc22ca64eb2d8503b13ac9c340dcb3_1761.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.oracle.svm.core.hub.DynamicHub.initEnumConstantsAtRuntime(DynamicHub.java:477)
	at com.oracle.svm.core.hub.DynamicHub.lambda$initEnumConstantsAtRuntime$1(DynamicHub.java:457)
	at com.oracle.svm.core.hub.DynamicHub$$Lambda$548/745267158.get(Unknown Source)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:190)
	at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:143)
	at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:331)
	at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VARARGS:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0)

	at com.oracle.graal.pointsto.constraints.UnsupportedFeatures.report(UnsupportedFeatures.java:126)
	at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:762)
	... 7 more
Caused by: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method java.lang.ClassLoader.defineClass1(String, byte[], int, int, ProtectionDomain, String) is reachable
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.
	at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.lookup(AnnotationSubstitutionProcessor.java:183)
	at com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor$ChainedSubstitutionProcessor.lookup(SubstitutionProcessor.java:128)
	at com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor$ChainedSubstitutionProcessor.lookup(SubstitutionProcessor.java:128)
	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:404)
	at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.lookupMethod(WrappedConstantPool.java:125)
	at org.graalvm.compiler.java.BytecodeParser.lookupMethodInPool(BytecodeParser.java:4313)
	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.lookupMethodInPool(SharedGraphBuilderPhase.java:109)
	at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:4307)
	at org.graalvm.compiler.java.BytecodeParser.genInvokeSpecial(BytecodeParser.java:1767)
	at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5339)
	at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3413)
	at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3220)
	at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1090)
	at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:984)
	at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:84)
	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase.run(SharedGraphBuilderPhase.java:70)
	at org.graalvm.compiler.phases.Phase.run(Phase.java:49)
	at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:214)
	at org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
	at org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:223)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:357)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:313)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:302)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:103)
	at com.oracle.graal.pointsto.DefaultAnalysisPolicy$DefaultSpecialInvokeTypeFlow.onObservedUpdate(DefaultAnalysisPolicy.java:368)
	at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:470)
	at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:542)
	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:545)
	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:173)
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
	... 4 more
Error: Image build request failed with exit status 1

If you open native-image.properties file and add --report-unsupported-elements-at-runtime it works.

@cstancu
Copy link
Member

cstancu commented Oct 13, 2020

This should be fixed by f4f1fc8. ClassLoader.defineClass() was automatically registered for reflection, but it should have just been @Deleteed and @Deleteed methods should be ignored by the reflection plugin.

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

3 participants