JDK11 & Polyglot
Bob McWhirter
bmcwhirt at redhat.com
Wed May 22 18:20:58 UTC 2019
With the new JDK11 changes, at one point I could build polyglot/libpolyglot
with JDK11.
Currently, though, I'm hitting:
[polyglot:96956] image: 3,838.67 ms
Fatal error: com.oracle.svm.core.util.VMError$HostedError:
com.oracle.svm.core.util.UserError$UserException: Static field or an object
referenced from a static field changed during native image generation?
object:com.oracle.truffle.api=true of class:
java.util.concurrent.ConcurrentHashMap$Node
reachable through:
object: [Ljava.util.concurrent.ConcurrentHashMap$Node;@bdedfe2 of
class: java.util.concurrent.ConcurrentHashMap$Node[]
object: {com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true} of class:
java.util.concurrent.ConcurrentHashMap
object: java.lang.WeakPairMap$Pair$Weak at 195d71ba={com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true} of class:
java.util.concurrent.ConcurrentHashMap$Node
object: [Ljava.util.concurrent.ConcurrentHashMap$Node;@400328da of
class: java.util.concurrent.ConcurrentHashMap$Node[]
object: {java.lang.WeakPairMap$Pair$Weak at 1f98c4db={com.sun.proxy.jdk.proxy2=false},
java.lang.WeakPairMap$Pair$Weak at 64fcd13f={org.graalvm.word.impl=false},
java.lang.WeakPairMap$Pair$Weak at 195d71ba={com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true},
java.lang.WeakPairMap$Pair$Weak at 27421acb={jdk.vm.ci.aarch64=false,
jdk.vm.ci.meta=false, jdk.vm.ci.code.site=false, jdk.vm.ci.services=false,
jdk.vm.ci.code=false, jdk.vm.ci.common=false, jdk.vm.ci.hotspot=false,
jdk.vm.ci.runtime=false, jdk.vm.ci.amd64=false},
java.lang.WeakPairMap$Pair$Weak at 40620d6e={com.sun.proxy.jdk.proxy1=false},
java.lang.WeakPairMap$Pair$Weak at 40620d6e={jdk.internal.vm.annotation=false,
jdk.internal=false, jdk.internal.reflect=false},
java.lang.WeakPairMap$Pair$Weak at 59e8f104={org.graalvm.nativeimage.c.constant=true},
java.lang.WeakPairMap$Pair$Weak at c2fcfe1={org.graalvm.compiler.graph=true,
org.graalvm.compiler.core.match=true},
java.lang.WeakPairMap$Pair$Weak at 1365b46a={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true},
java.lang.WeakPairMap$Pair$Weak at 7d268756={jdk.vm.ci.common=false},
java.lang.WeakPairMap$Pair$Weak at 1fc86ed8={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true},
java.lang.WeakPairMap$Pair$Weak at 1a0690f3={java.util=true, java.nio=true,
jdk.internal.misc=true, jdk.internal.logger=true, java.lang=true,
java.lang.ref=true, jdk.internal.vm.annotation=true, java.net=true,
java.lang.invoke=true, jdk.internal.ref=true, jdk.internal.module=true,
jdk.internal.reflect=true},
java.lang.WeakPairMap$Pair$Weak at 61628517={org.graalvm.nativeimage.impl=true,
org.graalvm.polyglot=true},
java.lang.WeakPairMap$Pair$Weak at 34a5bbf2={org.graalvm.compiler.debug=true,
org.graalvm.compiler.nodes=true},
java.lang.WeakPairMap$Pair$Weak at 21d705a9={com.oracle.truffle.api.impl=true,
com.oracle.truffle.polyglot=true},
java.lang.WeakPairMap$Pair$Weak at 13e7a139={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true}} of class:
java.util.concurrent.ConcurrentHashMap
object: java.lang.WeakPairMap at 6bb0d5ff of class: java.lang.WeakPairMap
root: null
at com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:70)
at
com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:646)
at
com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:449)
at
java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at
java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at
java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Caused by: com.oracle.svm.core.util.UserError$UserException: Static field
or an object referenced from a static field changed during native image
generation?
object:com.oracle.truffle.api=true of class:
java.util.concurrent.ConcurrentHashMap$Node
reachable through:
object: [Ljava.util.concurrent.ConcurrentHashMap$Node;@bdedfe2 of
class: java.util.concurrent.ConcurrentHashMap$Node[]
object: {com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true} of class:
java.util.concurrent.ConcurrentHashMap
object: java.lang.WeakPairMap$Pair$Weak at 195d71ba={com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true} of class:
java.util.concurrent.ConcurrentHashMap$Node
object: [Ljava.util.concurrent.ConcurrentHashMap$Node;@400328da of
class: java.util.concurrent.ConcurrentHashMap$Node[]
object: {java.lang.WeakPairMap$Pair$Weak at 1f98c4db={com.sun.proxy.jdk.proxy2=false},
java.lang.WeakPairMap$Pair$Weak at 64fcd13f={org.graalvm.word.impl=false},
java.lang.WeakPairMap$Pair$Weak at 195d71ba={com.oracle.truffle.api.dsl=true,
com.oracle.truffle.api.library=true, com.oracle.truffle.api.nodes=true,
com.oracle.truffle.api=true},
java.lang.WeakPairMap$Pair$Weak at 27421acb={jdk.vm.ci.aarch64=false,
jdk.vm.ci.meta=false, jdk.vm.ci.code.site=false, jdk.vm.ci.services=false,
jdk.vm.ci.code=false, jdk.vm.ci.common=false, jdk.vm.ci.hotspot=false,
jdk.vm.ci.runtime=false, jdk.vm.ci.amd64=false},
java.lang.WeakPairMap$Pair$Weak at 40620d6e={com.sun.proxy.jdk.proxy1=false},
java.lang.WeakPairMap$Pair$Weak at 40620d6e={jdk.internal.vm.annotation=false,
jdk.internal=false, jdk.internal.reflect=false},
java.lang.WeakPairMap$Pair$Weak at 59e8f104={org.graalvm.nativeimage.c.constant=true},
java.lang.WeakPairMap$Pair$Weak at c2fcfe1={org.graalvm.compiler.graph=true,
org.graalvm.compiler.core.match=true},
java.lang.WeakPairMap$Pair$Weak at 1365b46a={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true},
java.lang.WeakPairMap$Pair$Weak at 7d268756={jdk.vm.ci.common=false},
java.lang.WeakPairMap$Pair$Weak at 1fc86ed8={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true},
java.lang.WeakPairMap$Pair$Weak at 1a0690f3={java.util=true, java.nio=true,
jdk.internal.misc=true, jdk.internal.logger=true, java.lang=true,
java.lang.ref=true, jdk.internal.vm.annotation=true, java.net=true,
java.lang.invoke=true, jdk.internal.ref=true, jdk.internal.module=true,
jdk.internal.reflect=true},
java.lang.WeakPairMap$Pair$Weak at 61628517={org.graalvm.nativeimage.impl=true,
org.graalvm.polyglot=true},
java.lang.WeakPairMap$Pair$Weak at 34a5bbf2={org.graalvm.compiler.debug=true,
org.graalvm.compiler.nodes=true},
java.lang.WeakPairMap$Pair$Weak at 21d705a9={com.oracle.truffle.api.impl=true,
com.oracle.truffle.polyglot=true},
java.lang.WeakPairMap$Pair$Weak at 13e7a139={jdk.vm.ci.aarch64=true,
jdk.vm.ci.services=true, jdk.vm.ci.common=true, jdk.vm.ci.code=true,
jdk.vm.ci.hotspot.aarch64=true, jdk.vm.ci.runtime=true,
jdk.vm.ci.hotspot.sparc=true, jdk.vm.ci.code.stack=true,
jdk.vm.ci.hotspot.amd64=true, jdk.vm.ci.meta=true,
jdk.vm.ci.code.site=true, jdk.vm.ci.sparc=true, jdk.vm.ci.hotspot=true,
jdk.vm.ci.services.internal=true, jdk.vm.ci.amd64=true}} of class:
java.util.concurrent.ConcurrentHashMap
object: java.lang.WeakPairMap at 6bb0d5ff of class: java.lang.WeakPairMap
root: null
at com.oracle.svm.core.util.UserError.abort(UserError.java:65)
at
com.oracle.svm.hosted.image.NativeImageHeap.verifyTargetDidNotChange(NativeImageHeap.java:558)
at
com.oracle.svm.hosted.image.NativeImageHeap.writeReference(NativeImageHeap.java:595)
at
com.oracle.svm.hosted.image.NativeImageHeap.write(NativeImageHeap.java:584)
at
com.oracle.svm.hosted.image.NativeImageHeap.writeConstant(NativeImageHeap.java:621)
at
com.oracle.svm.hosted.image.NativeImageHeap.writeObject(NativeImageHeap.java:874)
at
com.oracle.svm.hosted.image.NativeImageHeap.writeHeap(NativeImageHeap.java:290)
at
com.oracle.svm.hosted.image.NativeBootImage.build(NativeBootImage.java:458)
at
com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:635)
... 7 more
Error: Image build request failed with exit status 1
Which when I add debug, can shuffle around and point to ObjectIdentifier or
TimerKeyImpl or a variety of other classes.
I sense that it might be the transient static boolean COMPACT_STRINGS on
String.class ultimately causing it, but that's not necessarily a warranted
opinion. It always seems to be a String problem, and COMPACT_STRINGS is
designated as set by the JVM at runtime, not to the true that appears in
the source.
Anyone have a thought or a pointer on what might've changed in the past 3
weeks, or if I'm completely off base and would be willing to point me in a
more useful direction.
Thanks,
-Bob
More information about the graal-dev
mailing list