-
Bug
-
Resolution: Unresolved
-
P4
-
None
The MOAT collections test crashes with --enable-preview.
In the creation of the substitutable method handles, it incorrectly uses Unsafe.
--enable-preview will not be enabled for MOAT until the problem can be found.
From the log file:
Current thread (0x000000013c049600): JavaThread "MainThread" [_thread_in_vm, id=43267, stack(0x000000016e254000,0x0000000
16e457000) (2060K)]
Stack: [0x000000016e254000,0x000000016e457000], sp=0x000000016e455010, free space=2052k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.dylib+0xa89ec0] Unsafe_ValueHeaderSize(JNIEnv_*, _jobject*, _jclass*)+0x114
j jdk.internal.misc.Unsafe.valueHeaderSize(Ljava/lang/Class;)J+0 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration.computeElementGetters(Ljava/lang/Class;)Ljava/util/List;+47 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration$1.computeValue(Ljava/lang/Class;)Ljava/util/List;+1 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration$1.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.valueTypeFields(Ljava/lang/Class;)Ljava/util/List;+4 java.base@25-lwo
rld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.<init>(Ljava/lang/Class;Ljava/util/Deque;Ljava/util/Map;)V+40 java.ba
se@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.lambda$detectCycles$0(Ljava/lang/Class;Ljava/util/Deque;Ljava/lang/Cl
ass;)Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilder;+10 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder$$Lambda+0x000006000100ac48.apply(Ljava/lang/Object;)Ljava/lang/Object
;+16 java.base@25-lworld5ea
j java.util.HashMap.computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+202 java.base@25-lworld5e
a
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.detectCycles()V+187 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.build()Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilder;+63
java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$1.computeValue(Ljava/lang/Class;)Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilde
r;+21 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$1.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.valueTypeEquals(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+4 j
ava.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$2.computeValue(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+1 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$2.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods.substitutableInvoker(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+23 java.base@25-lw
orld5ea
j java.lang.runtime.ValueObjectMethods.isSubstitutable(Ljava/lang/Object;Ljava/lang/Object;)Z+91 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00000001164e0154
V [libjvm.dylib+0x50af08] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x450
V [libjvm.dylib+0x4fcc70] InterpreterRuntime::is_substitutable(JavaThread*, oopDesc*, oopDesc*)+0x2c4
j java.util.HashMap.removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;+58 java.base@25-lworld5ea
j java.util.HashMap.remove(Ljava/lang/Object;)Ljava/lang/Object;+9 java.base@25-lworld5ea
j java.util.HashSet.remove(Ljava/lang/Object;)Z+5 java.base@25-lworld5ea
j MOAT$NewAbstractSet.remove(Ljava/lang/Object;)Z+5
j MOAT.supportsAdd(Ljava/util/Collection;)Z+48
j MOAT.testCollection1(Ljava/util/Collection;)V+25
j MOAT.testCollection(Ljava/util/Collection;)V+1
j MOAT.realMain([Ljava/lang/String;)V+17
j MOAT.main([Ljava/lang/String;)V+1
j java.lang.invoke.LambdaForm$DMH+0x0000060001040c00.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base@25-lworld5
ea
j java.lang.invoke.LambdaForm$MH+0x0000060001043000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Obj
ect;+33 java.base@25-lworld5ea
j java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava
/lang/Object;+20 java.base@25-lworld5ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.ba
se@25-lworld5ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base@2
5-lworld5ea
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base@25-lworld5ea
j com.sun.javatest.regtest.agent.MainWrapper$MainTask.run()V+134
j java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base@25-lworld5ea
j java.lang.Thread.run()V+19 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00000001164e0154
V [libjvm.dylib+0x50af08] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x450
V [libjvm.dylib+0x509db8] JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x164
V [libjvm.dylib+0x509e84] JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, JavaThread*)+0x64
V [libjvm.dylib+0x5e1454] thread_entry(JavaThread*, JavaThread*)+0x9c
In the creation of the substitutable method handles, it incorrectly uses Unsafe.
--enable-preview will not be enabled for MOAT until the problem can be found.
From the log file:
Current thread (0x000000013c049600): JavaThread "MainThread" [_thread_in_vm, id=43267, stack(0x000000016e254000,0x0000000
16e457000) (2060K)]
Stack: [0x000000016e254000,0x000000016e457000], sp=0x000000016e455010, free space=2052k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.dylib+0xa89ec0] Unsafe_ValueHeaderSize(JNIEnv_*, _jobject*, _jclass*)+0x114
j jdk.internal.misc.Unsafe.valueHeaderSize(Ljava/lang/Class;)J+0 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration.computeElementGetters(Ljava/lang/Class;)Ljava/util/List;+47 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration$1.computeValue(Ljava/lang/Class;)Ljava/util/List;+1 java.base@25-lworld5ea
j jdk.internal.value.LayoutIteration$1.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.valueTypeFields(Ljava/lang/Class;)Ljava/util/List;+4 java.base@25-lwo
rld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.<init>(Ljava/lang/Class;Ljava/util/Deque;Ljava/util/Map;)V+40 java.ba
se@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.lambda$detectCycles$0(Ljava/lang/Class;Ljava/util/Deque;Ljava/lang/Cl
ass;)Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilder;+10 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder$$Lambda+0x000006000100ac48.apply(Ljava/lang/Object;)Ljava/lang/Object
;+16 java.base@25-lworld5ea
j java.util.HashMap.computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+202 java.base@25-lworld5e
a
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.detectCycles()V+187 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.build()Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilder;+63
java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$1.computeValue(Ljava/lang/Class;)Ljava/lang/runtime/ValueObjectMethods$MethodHandleBuilde
r;+21 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$1.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$MethodHandleBuilder.valueTypeEquals(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+4 j
ava.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$2.computeValue(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+1 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods$2.computeValue(Ljava/lang/Class;)Ljava/lang/Object;+2 java.base@25-lworld5ea
j java.lang.ClassValue.getFromHashMap(Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@25-lworld5ea
j java.lang.ClassValue.getFromBackup([Ljava/lang/ClassValue$Entry;Ljava/lang/Class;)Ljava/lang/Object;+17 java.base@25-lworld5ea
j java.lang.ClassValue.get(Ljava/lang/Class;)Ljava/lang/Object;+27 java.base@25-lworld5ea
j java.lang.runtime.ValueObjectMethods.substitutableInvoker(Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;+23 java.base@25-lw
orld5ea
j java.lang.runtime.ValueObjectMethods.isSubstitutable(Ljava/lang/Object;Ljava/lang/Object;)Z+91 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00000001164e0154
V [libjvm.dylib+0x50af08] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x450
V [libjvm.dylib+0x4fcc70] InterpreterRuntime::is_substitutable(JavaThread*, oopDesc*, oopDesc*)+0x2c4
j java.util.HashMap.removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;+58 java.base@25-lworld5ea
j java.util.HashMap.remove(Ljava/lang/Object;)Ljava/lang/Object;+9 java.base@25-lworld5ea
j java.util.HashSet.remove(Ljava/lang/Object;)Z+5 java.base@25-lworld5ea
j MOAT$NewAbstractSet.remove(Ljava/lang/Object;)Z+5
j MOAT.supportsAdd(Ljava/util/Collection;)Z+48
j MOAT.testCollection1(Ljava/util/Collection;)V+25
j MOAT.testCollection(Ljava/util/Collection;)V+1
j MOAT.realMain([Ljava/lang/String;)V+17
j MOAT.main([Ljava/lang/String;)V+1
j java.lang.invoke.LambdaForm$DMH+0x0000060001040c00.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base@25-lworld5
ea
j java.lang.invoke.LambdaForm$MH+0x0000060001043000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Obj
ect;+33 java.base@25-lworld5ea
j java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava
/lang/Object;+20 java.base@25-lworld5ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.ba
se@25-lworld5ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base@2
5-lworld5ea
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base@25-lworld5ea
j com.sun.javatest.regtest.agent.MainWrapper$MainTask.run()V+134
j java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base@25-lworld5ea
j java.lang.Thread.run()V+19 java.base@25-lworld5ea
v ~StubRoutines::call_stub 0x00000001164e0154
V [libjvm.dylib+0x50af08] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x450
V [libjvm.dylib+0x509db8] JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*)+0x164
V [libjvm.dylib+0x509e84] JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, JavaThread*)+0x64
V [libjvm.dylib+0x5e1454] thread_entry(JavaThread*, JavaThread*)+0x9c