chaokunyang commented on issue #1555:
URL:
https://github.com/apache/incubator-fury/issues/1555#issuecomment-2072910978
Hi @alessiodf , thanks for reporting this bug. Fury do not support
compatible mode on graalvm. I tested it locally, and it throw following
exception:
```java
Error: Class initialization of org.apache.fury.graalvm.ThreadSafeExample
failed. Use the option
'--initialize-at-run-time=org.apache.fury.graalvm.ThreadSafeExample'
to explicitly request initialization of this class at run time.
com.oracle.svm.core.util.UserError$UserException: Class initialization of
org.apache.fury.graalvm.ThreadSafeExample failed. Use the option
'--initialize-at-run-time=org.apache.fury.graalvm.ThreadSafeExample'
to explicitly request initialization of this class at run time.
at
org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:85)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationSupport.ensureClassInitialized(ClassInitializationSupport.java:195)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.forceInitializeHosted(ProvenSafeClassInitializationSupport.java:219)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.initializeAtBuildTime(ProvenSafeClassInitializationSupport.java:195)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationSupport.initializeAtBuildTime(ClassInitializationSupport.java:224)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.InitKind.lambda$stringConsumer$2(InitKind.java:87)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.lambda$processClassInitializationOptions$1(ClassInitializationFeature.java:91)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at
java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.processClassInitializationOptions(ClassInitializationFeature.java:81)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:879)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:590)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
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)
Caused by: java.lang.ExceptionInInitializerError
at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native
Method)
at
java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160)
at
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationSupport.ensureClassInitialized(ClassInitializationSupport.java:177)
... 22 more
Caused by: java.lang.RuntimeException: Create compatible serializer failed,
class: class org.apache.fury.graalvm.Foo
at
org.apache.fury.serializer.CodegenSerializer.loadCompatibleCodegenSerializer(CodegenSerializer.java:57)
at
org.apache.fury.resolver.ClassResolver.lambda$getObjectSerializerClass$4(ClassResolver.java:957)
at
org.apache.fury.builder.JITContext.registerSerializerJITCallback(JITContext.java:131)
at
org.apache.fury.resolver.ClassResolver.getObjectSerializerClass(ClassResolver.java:952)
at
org.apache.fury.resolver.ClassResolver.getSerializerClass(ClassResolver.java:875)
at
org.apache.fury.resolver.ClassResolver.getSerializerClass(ClassResolver.java:772)
at
org.apache.fury.resolver.ClassResolver.createSerializer(ClassResolver.java:1158)
at
org.apache.fury.resolver.ClassResolver.getOrUpdateClassInfo(ClassResolver.java:1097)
at
org.apache.fury.resolver.ClassResolver.getSerializer(ClassResolver.java:743)
at
org.apache.fury.resolver.ClassResolver.register(ClassResolver.java:403)
at org.apache.fury.Fury.register(Fury.java:154)
at
org.apache.fury.graalvm.ThreadSafeExample.lambda$static$0(ThreadSafeExample.java:45)
at
org.apache.fury.util.LoaderBinding.setClassLoader(LoaderBinding.java:127)
at
org.apache.fury.util.LoaderBinding.setClassLoader(LoaderBinding.java:95)
at
org.apache.fury.ThreadLocalFury.lambda$new$2(ThreadLocalFury.java:59)
at
java.base/java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:357)
at
java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:225)
at java.base/java.lang.ThreadLocal.get(ThreadLocal.java:194)
at java.base/java.lang.ThreadLocal.get(ThreadLocal.java:172)
at org.apache.fury.ThreadLocalFury.<init>(ThreadLocalFury.java:67)
at
org.apache.fury.graalvm.ThreadSafeExample.<clinit>(ThreadSafeExample.java:40)
... 25 more
Caused by: java.lang.IllegalStateException: Field offset will change between
graalvm build time and runtime, should bye accessed by following graalvm auto
rewrite pattern.
at
org.apache.fury.util.ReflectionUtils.getFieldOffset(ReflectionUtils.java:374)
at
org.apache.fury.util.FieldAccessor.createAccessor(FieldAccessor.java:118)
at
org.apache.fury.resolver.FieldResolver$FieldInfo.<init>(FieldResolver.java:721)
at
org.apache.fury.resolver.FieldResolver.<init>(FieldResolver.java:279)
at org.apache.fury.resolver.FieldResolver.of(FieldResolver.java:206)
at
org.apache.fury.builder.CodecUtils.loadOrGenCompatibleCodecClass(CodecUtils.java:56)
at
org.apache.fury.serializer.CodegenSerializer.loadCompatibleCodegenSerializer(CodegenSerializer.java:54)
... 45 more
```
We need to make `FieldResolver` support graalvm
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]