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

Native Build with GraalVM #202

Closed
Serverfrog opened this issue Nov 25, 2019 · 5 comments
Closed

Native Build with GraalVM #202

Serverfrog opened this issue Nov 25, 2019 · 5 comments

Comments

@Serverfrog
Copy link

Serverfrog commented Nov 25, 2019

When i try to build a Application using Chronicle-Map with GraalVM's native-image it fails.

The SubstrateVM (the native Building tool) can build with Access to Native Memory
[https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md#unsafe-memory-access](Unsafe Memory Access)

Using a native build Application with Chronicle-Map could improve an Application an incredible much.

Following Log Entries inside the Build:

gu install native-image�[0;m
Downloading: Component catalog from www.graalvm.org
Processing component archive: Native Image
Downloading: Component native-image: Native Image  from github.com
[                    ]����������������������[#                   ]����������������������[##                  ]����������������������[###                 ]����������������������[####                ]����������������������[#####               ]����������������������[######              ]����������������������[#######             ]����������������������[########            ]����������������������[#########           ]����������������������[##########          ]����������������������[###########         ]����������������������[############        ]����������������������[#############       ]����������������������[##############      ]����������������������[###############     ]����������������������[################    ]����������������������[#################   ]����������������������[##################  ]����������������������[################### ]����������������������[####################]����������������������Installing new component: Native Image (org.graalvm.native-image, version 19.2.0)
Refreshed alternative links in /usr/bin/
native-image --no-server -cp build/libs/premiumize-downloader-0.1-all.jar -H:+ReportExceptionStackTraces --no-fallback�[0;m
[premiumize-downloader:87]    classlist:  19,720.30 ms
[premiumize-downloader:87]        (cap):   3,968.41 ms
[premiumize-downloader:87]        setup:   9,208.52 ms
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.bytes.NativeBytesStore. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.bytes.NativeBytesStore. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.bytes.NativeBytesStore. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.hash.impl.util.CleanerUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.hash.impl.util.CleanerUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.core.util.StringUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.core.util.StringUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.core.util.StringUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.wire.BitSetUtil. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.wire.BitSetUtil. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.wire.BitSetUtil. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.wire.WireInternal. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.wire.WireInternal. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
Warning: RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of net.openhft.chronicle.values.CompilerUtils. Detailed failure reason(s): Could not determine the field where the value produced by the call to sun.misc.Unsafe.objectFieldOffset(Field) for the field offset computation is stored. The call is not directly followed by a field store or by a sign extend node followed directly by a field store. 
[premiumize-downloader:87]     analysis: 188,696.41 ms
Error: Error encountered while parsing net.openhft.chronicle.wire.WireMarshaller$FieldAccess.copy(java.lang.Object, java.lang.Object) 
Parsing context:
	parsing net.openhft.chronicle.wire.WireMarshallerForUnexpectedFields.readMarshallable(WireMarshallerForUnexpectedFields.java:24)
	parsing net.openhft.chronicle.wire.Wires.readMarshallable(Wires.java:324)
	parsing net.openhft.chronicle.wire.SerializationStrategies$5.readUsing(SerializationStrategies.java:122)
	parsing net.openhft.chronicle.wire.Wires.object0(Wires.java:515)
	parsing net.openhft.chronicle.wire.ValueIn.object(ValueIn.java:598)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.objectWithInferredType0(TextWire.java:3330)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.objectWithInferredType(TextWire.java:3303)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.typedMarshallable(TextWire.java:3093)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.openWithExistingFile(ChronicleMapBuilder.java:1853)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createWithFile(ChronicleMapBuilder.java:1724)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createPersistedTo(ChronicleMapBuilder.java:1615)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1637)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1626)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1620)
	parsing de.serverfrog.premiumize.downloader.database.InMemoryDatabase.<init>(InMemoryDatabase.kt:48)
	parsing de.serverfrog.premiumize.downloader.database.$InMemoryDatabaseDefinition.build(Unknown Source)
	parsing io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1610)
	parsing io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:2642)
	parsing io.micronaut.context.DefaultBeanContext.getBeansOfTypeInternal(DefaultBeanContext.java:2541)
	parsing io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:637)
	parsing io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1130)
	parsing io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:217)
	parsing io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:187)
	parsing io.micronaut.runtime.Micronaut.start(Micronaut.java:69)
	parsing de.serverfrog.premiumize.downloader.Application$Companion.main(Application.kt:47)
	parsing de.serverfrog.premiumize.downloader.Application.main(Application.kt)
	parsing com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151)
	parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186)
	parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)

com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing net.openhft.chronicle.wire.WireMarshaller$FieldAccess.copy(java.lang.Object, java.lang.Object) 
Parsing context:
	parsing net.openhft.chronicle.wire.WireMarshallerForUnexpectedFields.readMarshallable(WireMarshallerForUnexpectedFields.java:24)
	parsing net.openhft.chronicle.wire.Wires.readMarshallable(Wires.java:324)
	parsing net.openhft.chronicle.wire.SerializationStrategies$5.readUsing(SerializationStrategies.java:122)
	parsing net.openhft.chronicle.wire.Wires.object0(Wires.java:515)
	parsing net.openhft.chronicle.wire.ValueIn.object(ValueIn.java:598)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.objectWithInferredType0(TextWire.java:3330)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.objectWithInferredType(TextWire.java:3303)
	parsing net.openhft.chronicle.wire.TextWire$TextValueIn.typedMarshallable(TextWire.java:3093)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.openWithExistingFile(ChronicleMapBuilder.java:1853)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createWithFile(ChronicleMapBuilder.java:1724)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createPersistedTo(ChronicleMapBuilder.java:1615)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1637)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1626)
	parsing net.openhft.chronicle.map.ChronicleMapBuilder.createOrRecoverPersistedTo(ChronicleMapBuilder.java:1620)
	parsing de.serverfrog.premiumize.downloader.database.InMemoryDatabase.<init>(InMemoryDatabase.kt:48)
	parsing de.serverfrog.premiumize.downloader.database.$InMemoryDatabaseDefinition.build(Unknown Source)
	parsing io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1610)
	parsing io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:2642)
	parsing io.micronaut.context.DefaultBeanContext.getBeansOfTypeInternal(DefaultBeanContext.java:2541)
	parsing io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:637)
	parsing io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1130)
	parsing io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:217)
	parsing io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:187)
	parsing io.micronaut.runtime.Micronaut.start(Micronaut.java:69)
	parsing de.serverfrog.premiumize.downloader.Application$Companion.main(Application.kt:47)
	parsing de.serverfrog.premiumize.downloader.Application.main(Application.kt)
	parsing com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151)
	parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186)
	parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)

	at com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:138)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:327)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
	at com.oracle.graal.pointsto.DefaultAnalysisPolicy$DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultAnalysisPolicy.java:191)
	at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:343)
	at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:385)
	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:510)
	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:171)
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
	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.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder$UnsafeOffsetError: Field AnalysisField<WireMarshaller$FieldAccess.offset accessed: false reads: true written: true> is used as an offset in an unsafe operation, but no value recomputation found.
 Wrapped field: HotSpotResolvedJavaFieldImpl<net.openhft.chronicle.wire.WireMarshaller$FieldAccess.offset long:16>
 Location: at net.openhft.chronicle.wire.WireMarshaller$FieldAccess.copy(WireMarshaller.java:418) [bci: 13]
	at com.oracle.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder$UnsafeOffsetError.report(SVMMethodTypeFlowBuilder.java:119)
	at com.oracle.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder.checkUnsafeOffset(SVMMethodTypeFlowBuilder.java:161)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder$NodeIterator.node(MethodTypeFlowBuilder.java:1029)
	at org.graalvm.compiler.phases.graph.PostOrderNodeIterator.apply(PostOrderNodeIterator.java:106)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:421)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
	... 12 more
Error: Error encountered while parsing net.openhft.chronicle.wire.WireMarshaller$DoubleFieldAccess.sameValue(java.lang.Object, java.lang.Object) 
Parsing context:
	parsing net.openhft.chronicle.wire.WireMarshaller$FieldAccess.isEqual(WireMarshaller.java:437)
	parsing net.openhft.chronicle.wire.WireMarshaller.isEqual(WireMarshaller.java:194)
	parsing net.openhft.chronicle.wire.Wires.isEquals(Wires.java:377)
	parsing net.openhft.chronicle.wire.AbstractFieldInfo.equals(AbstractFieldInfo.java:42)
	parsing io.reactivex.internal.util.OpenHashSet.add(OpenHashSet.java:64)
	parsing io.reactivex.disposables.CompositeDisposable.add(CompositeDisposable.java:108)
	parsing io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.schedule(ExecutorScheduler.java:156)
	parsing io.reactivex.internal.operators.flowable.FlowableSubscribeOn.subscribeActual(FlowableSubscribeOn.java:48)
	parsing io.reactivex.Flowable.subscribe(Flowable.java:14918)
	parsing io.reactivex.Flowable.subscribe(Flowable.java:14868)
	parsing io.micronaut.http.client.interceptor.HttpClientIntroductionAdvice.intercept(HttpClientIntroductionAdvice.java:487)
	parsing io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
	parsing de.serverfrog.premiumize.downloader.Application$ApplicationEventListener$loadConferenceData1$Intercepted.onApplicationEvent(Unknown Source)
	parsing io.micronaut.context.DefaultBeanContext.lambda$publishEvent$17(DefaultBeanContext.java:1145)
	parsing io.micronaut.context.DefaultBeanContext$$Lambda$436/607723195.accept(Unknown Source)
	parsing java.util.ArrayList.forEach(ArrayList.java:1257)
	parsing io.micronaut.context.DefaultBeanContext.lambda$processParallelBeans$47(DefaultBeanContext.java:1746)
	parsing io.micronaut.context.DefaultBeanContext$$Lambda$434/1963668494.run(Unknown Source)
	parsing com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:144)
	parsing com.oracle.svm.core.jdk.RuntimeSupport.executeTearDownHooks(RuntimeSupport.java:121)
	parsing com.oracle.svm.core.graal.snippets.CEntryPointSnippets.tearDownIsolate(CEntryPointSnippets.java:300)

com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing net.openhft.chronicle.wire.WireMarshaller$DoubleFieldAccess.sameValue(java.lang.Object, java.lang.Object) 
Parsing context:
	parsing net.openhft.chronicle.wire.WireMarshaller$FieldAccess.isEqual(WireMarshaller.java:437)
	parsing net.openhft.chronicle.wire.WireMarshaller.isEqual(WireMarshaller.java:194)
	parsing net.openhft.chronicle.wire.Wires.isEquals(Wires.java:377)
	parsing net.openhft.chronicle.wire.AbstractFieldInfo.equals(AbstractFieldInfo.java:42)
	parsing io.reactivex.internal.util.OpenHashSet.add(OpenHashSet.java:64)
	parsing io.reactivex.disposables.CompositeDisposable.add(CompositeDisposable.java:108)
	parsing io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.schedule(ExecutorScheduler.java:156)
	parsing io.reactivex.internal.operators.flowable.FlowableSubscribeOn.subscribeActual(FlowableSubscribeOn.java:48)
	parsing io.reactivex.Flowable.subscribe(Flowable.java:14918)
	parsing io.reactivex.Flowable.subscribe(Flowable.java:14868)
	parsing io.micronaut.http.client.interceptor.HttpClientIntroductionAdvice.intercept(HttpClientIntroductionAdvice.java:487)
	parsing io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
	parsing de.serverfrog.premiumize.downloader.Application$ApplicationEventListener$loadConferenceData1$Intercepted.onApplicationEvent(Unknown Source)
	parsing io.micronaut.context.DefaultBeanContext.lambda$publishEvent$17(DefaultBeanContext.java:1145)
	parsing io.micronaut.context.DefaultBeanContext$$Lambda$436/607723195.accept(Unknown Source)
	parsing java.util.ArrayList.forEach(ArrayList.java:1257)
	parsing io.micronaut.context.DefaultBeanContext.lambda$processParallelBeans$47(DefaultBeanContext.java:1746)
	parsing io.micronaut.context.DefaultBeanContext$$Lambda$434/1963668494.run(Unknown Source)
	parsing com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:144)
	parsing com.oracle.svm.core.jdk.RuntimeSupport.executeTearDownHooks(RuntimeSupport.java:121)
	parsing com.oracle.svm.core.graal.snippets.CEntryPointSnippets.tearDownIsolate(CEntryPointSnippets.java:300)

	at com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:138)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:327)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
	at com.oracle.graal.pointsto.DefaultAnalysisPolicy$DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultAnalysisPolicy.java:191)
	at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:343)
	at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:385)
	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:510)
	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:171)
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
	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.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder$UnsafeOffsetError: Field AnalysisField<WireMarshaller$FieldAccess.offset accessed: false reads: true written: true> is used as an offset in an unsafe operation, but no value recomputation found.
 Wrapped field: HotSpotResolvedJavaFieldImpl<net.openhft.chronicle.wire.WireMarshaller$FieldAccess.offset long:16>
 Location: at net.openhft.chronicle.wire.WireMarshaller$DoubleFieldAccess.sameValue(WireMarshaller.java:1557) [bci: 5]
	at com.oracle.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder$UnsafeOffsetError.report(SVMMethodTypeFlowBuilder.java:119)
	at com.oracle.svm.hosted.analysis.flow.SVMMethodTypeFlowBuilder.checkUnsafeOffset(SVMMethodTypeFlowBuilder.java:161)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder$NodeIterator.node(MethodTypeFlowBuilder.java:1029)
	at org.graalvm.compiler.phases.graph.PostOrderNodeIterator.apply(PostOrderNodeIterator.java:106)
	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:421)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
	... 12 more
Error: Image build request failed with exit status 1
@dpisklov
Copy link
Contributor

dpisklov commented Dec 2, 2019

@Serverfrog you probably need to report this to Graal, not us. Graal compiler can't figure out how to work with Unsafe but it works fine with Graal JIT meaning there's no problem with the code.

@Serverfrog
Copy link
Author

@dpisklov , this is not entirely true.
Yes Graal (or bettet the Substrate VM) can't Figuren Out what IT should do. But it can be told what it should do.
See this from the Substrate VM https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md#unsafe-memory-access

Beside that, this Issue from that comment on
oracle/graal#304 (comment)

@dpisklov
Copy link
Contributor

dpisklov commented Dec 3, 2019

@Serverfrog feel free to submit a PR, we currently have no clients who would use SubstrateVM, nor we have capacity to learn how to tell it what to do.

@minborg
Copy link
Contributor

minborg commented Jan 3, 2022

Have you been able to run a more recent version of GraalVM @Serverfrog ?

@minborg
Copy link
Contributor

minborg commented Jan 5, 2022

Closing as wontfix

@minborg minborg closed this as completed Jan 5, 2022
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