Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8350763

[lworld] InlineKlass::flat_array_klass hits assert(has_non_atomic_layout()) failed: Must be

XMLWordPrintable

      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

            fparain Frederic Parain
            thartmann Tobias Hartmann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: