-
Bug
-
Resolution: Fixed
-
P3
-
repo-valhalla
Running my new test test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestFieldNullMarkers.java from https://github.com/openjdk/valhalla/compare/lworld...TobiHartmann:valhalla:JDK-8341767 with "-Xint -XX:-UseNonAtomicValueFlattening" asserts in the runtime:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle/valhalla/open/src/hotspot/share/oops/inlineKlass.cpp:316), pid=3412048, tid=3412066
# assert(has_non_atomic_layout()) failed: sanity
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-02-20-1209440.tobias...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-02-20-1209440.tobias..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xf08302] InlineKlass::flat_array()+0x92
Stack: [0x00007178bde00000,0x00007178bdf00000], sp=0x00007178bdefdd60, free space=1015k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xf08302] InlineKlass::flat_array()+0x92 (inlineKlass.cpp:316)
V [libjvm.so+0x110423f] JVM_NewNullRestrictedArray+0x18f (jvm.cpp:438)
j jdk.internal.value.ValueClass.newNullRestrictedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+0 java.base
j compiler.valhalla.inlinetypes.TestArrayNullMarkers.<clinit>()V+215
v ~StubRoutines::call_stub 0x00007178d5000d01
V [libjvm.so+0xf89ee3] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x4a3 (javaCalls.cpp:429)
V [libjvm.so+0xf2caec] InstanceKlass::call_class_initializer(JavaThread*)+0x2cc (instanceKlass.cpp:1945)
V [libjvm.so+0xf33760] InstanceKlass::initialize_impl(JavaThread*)+0x860 (instanceKlass.cpp:1554)
V [libjvm.so+0xf346de] InstanceKlass::initialize(JavaThread*)+0x9e (instanceKlass.cpp:885)
V [libjvm.so+0x19b1f77] Unsafe_EnsureClassInitialized0+0x127 (unsafe.cpp:792)
j jdk.internal.misc.Unsafe.ensureClassInitialized0(Ljava/lang/Class;)V+0 java.base
j jdk.internal.misc.Unsafe.ensureClassInitialized(Ljava/lang/Class;)V+14 java.base
j jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(Ljava/lang/Class;)V+14 java.base
j jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(Ljava/lang/reflect/Method;Z)Ljdk/internal/reflect/MethodAccessorImpl;+17 java.base
j jdk.internal.reflect.ReflectionFactory.newMethodAccessor(Ljava/lang/reflect/Method;Z)Ljdk/internal/reflect/MethodAccessor;+22 java.base
j java.lang.reflect.Method.acquireMethodAccessor()Ljdk/internal/reflect/MethodAccessor;+38 java.base
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+75 java.base
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
j java.lang.Thread.run()V+19 java.base
v ~StubRoutines::call_stub 0x00007178d5000d01
[...]
This is an assert that I added. Without it, we hit this:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle/valhalla/open/src/hotspot/share/oops/inlineKlass.cpp:341), pid=3412781, tid=3412799
# assert(has_non_atomic_layout()) failed: Must be
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-02-20-1209440.tobias...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-02-20-1209440.tobias..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xf08642] InlineKlass::flat_array_klass(LayoutKind, JavaThread*)+0x192
V [libjvm.so+0xf08642] InlineKlass::flat_array_klass(LayoutKind, JavaThread*)+0x192 (inlineKlass.cpp:341)
V [libjvm.so+0x15e5f4f] oopFactory::new_flatArray(Klass*, int, LayoutKind, JavaThread*)+0x3f (oopFactory.cpp:139)
V [libjvm.so+0x11042b6] JVM_NewNullRestrictedArray+0x266 (jvm.cpp:439)
j jdk.internal.value.ValueClass.newNullRestrictedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+0 java.base
j compiler.valhalla.inlinetypes.TestArrayNullMarkers.<clinit>()V+215
v ~StubRoutines::call_stub 0x0000751185000d01
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle/valhalla/open/src/hotspot/share/oops/inlineKlass.cpp:316), pid=3412048, tid=3412066
# assert(has_non_atomic_layout()) failed: sanity
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-02-20-1209440.tobias...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-02-20-1209440.tobias..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xf08302] InlineKlass::flat_array()+0x92
Stack: [0x00007178bde00000,0x00007178bdf00000], sp=0x00007178bdefdd60, free space=1015k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xf08302] InlineKlass::flat_array()+0x92 (inlineKlass.cpp:316)
V [libjvm.so+0x110423f] JVM_NewNullRestrictedArray+0x18f (jvm.cpp:438)
j jdk.internal.value.ValueClass.newNullRestrictedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+0 java.base
j compiler.valhalla.inlinetypes.TestArrayNullMarkers.<clinit>()V+215
v ~StubRoutines::call_stub 0x00007178d5000d01
V [libjvm.so+0xf89ee3] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x4a3 (javaCalls.cpp:429)
V [libjvm.so+0xf2caec] InstanceKlass::call_class_initializer(JavaThread*)+0x2cc (instanceKlass.cpp:1945)
V [libjvm.so+0xf33760] InstanceKlass::initialize_impl(JavaThread*)+0x860 (instanceKlass.cpp:1554)
V [libjvm.so+0xf346de] InstanceKlass::initialize(JavaThread*)+0x9e (instanceKlass.cpp:885)
V [libjvm.so+0x19b1f77] Unsafe_EnsureClassInitialized0+0x127 (unsafe.cpp:792)
j jdk.internal.misc.Unsafe.ensureClassInitialized0(Ljava/lang/Class;)V+0 java.base
j jdk.internal.misc.Unsafe.ensureClassInitialized(Ljava/lang/Class;)V+14 java.base
j jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(Ljava/lang/Class;)V+14 java.base
j jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(Ljava/lang/reflect/Method;Z)Ljdk/internal/reflect/MethodAccessorImpl;+17 java.base
j jdk.internal.reflect.ReflectionFactory.newMethodAccessor(Ljava/lang/reflect/Method;Z)Ljdk/internal/reflect/MethodAccessor;+22 java.base
j java.lang.reflect.Method.acquireMethodAccessor()Ljdk/internal/reflect/MethodAccessor;+38 java.base
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+75 java.base
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
j java.lang.Thread.run()V+19 java.base
v ~StubRoutines::call_stub 0x00007178d5000d01
[...]
This is an assert that I added. Without it, we hit this:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle/valhalla/open/src/hotspot/share/oops/inlineKlass.cpp:341), pid=3412781, tid=3412799
# assert(has_non_atomic_layout()) failed: Must be
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-02-20-1209440.tobias...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-02-20-1209440.tobias..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0xf08642] InlineKlass::flat_array_klass(LayoutKind, JavaThread*)+0x192
V [libjvm.so+0xf08642] InlineKlass::flat_array_klass(LayoutKind, JavaThread*)+0x192 (inlineKlass.cpp:341)
V [libjvm.so+0x15e5f4f] oopFactory::new_flatArray(Klass*, int, LayoutKind, JavaThread*)+0x3f (oopFactory.cpp:139)
V [libjvm.so+0x11042b6] JVM_NewNullRestrictedArray+0x266 (jvm.cpp:439)
j jdk.internal.value.ValueClass.newNullRestrictedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+0 java.base
j compiler.valhalla.inlinetypes.TestArrayNullMarkers.<clinit>()V+215
v ~StubRoutines::call_stub 0x0000751185000d01
- blocks
-
JDK-8341767 [lworld] JIT support for nullable, atomic, flat arrays
-
- In Progress
-
- links to
-
Commit(lworld) openjdk/valhalla/f2a6f448
-
Review(lworld) openjdk/valhalla/1380