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

[lworld] InlineKlass::collect_fields fails to look up flat fields declared in abstract super class

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • repo-valhalla
    • repo-valhalla
    • hotspot

      This change leads to a crash

      diff --git a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/MyAbstract.java b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/MyAbstract.java
      index 1d11361113a..c92f94cf448 100644
      --- a/test/hotspot/jtreg/compiler/valhalla/inlinetypes/MyAbstract.java
      +++ b/test/hotspot/jtreg/compiler/valhalla/inlinetypes/MyAbstract.java
      @@ -24,9 +24,14 @@
       package compiler.valhalla.inlinetypes;
       
       import jdk.internal.vm.annotation.LooselyConsistentValue;
      +import jdk.internal.vm.annotation.NullRestricted;
      +import jdk.internal.vm.annotation.Strict;
       
       @LooselyConsistentValue
       public abstract value class MyAbstract implements MyInterface {
       
      + @Strict
      + @NullRestricted
      + MyValue2Inline field = new MyValue2Inline(0, 0);
       }

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/home/merykitty/openjdk/valhalla/src/hotspot/share/oops/instanceKlass.inline.hpp:70), pid=1736, tid=1773
      # assert(k != nullptr) failed: Should always be set before being read
      #
      # JRE version: OpenJDK Runtime Environment (25.0) (fastdebug build 25-internal-adhoc.merykitty.valhalla)
      # Java VM: OpenJDK 64-Bit Server VM (fastdebug 25-internal-adhoc.merykitty.valhalla, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0xfc547f] InlineKlass::collect_fields(GrowableArray<SigEntry>*, float&, int, int)+0x120f
      #

      Stack: [0x00007f7ce7729000,0x00007f7ce7829000], sp=0x00007f7ce7822370, free space=996k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0xfc547f] InlineKlass::collect_fields(GrowableArray<SigEntry>*, float&, int, int)+0x120f (instanceKlass.inline.hpp:70)
      V [libjvm.so+0xfc56c1] InlineKlass::initialize_calling_convention(JavaThread*)+0x161 (inlineKlass.cpp:458)
      V [libjvm.so+0xa6e952] ClassFileParser::fill_instance_klass(InstanceKlass*, bool, ClassInstanceInfo const&, JavaThread*)+0x2172 (classFileParser.cpp:5477)
      V [libjvm.so+0xa6ed31] ClassFileParser::create_instance_klass(bool, ClassInstanceInfo const&, JavaThread*)+0x91 (classFileParser.cpp:5254)
      V [libjvm.so+0x13f835a] KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0x2ea (klassFactory.cpp:202)
      V [libjvm.so+0x1c369fa] SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0xfa (systemDictionary.cpp:875)
      V [libjvm.so+0x11f3cac] jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x36c (jvm.cpp:1077)
      V [libjvm.so+0x11f3f83] JVM_DefineClassWithSource+0xa3 (jvm.cpp:1244)

            thartmann Tobias Hartmann
            qamai Quan Anh Mai
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: