JVM Crash in C2 Compiler when invoking WeakReference.get() on a null receiver within a loop

XMLWordPrintable

      ADDITIONAL SYSTEM INFORMATION :
      Software:
          System Software Overview:
            System Version: Ubuntu 22.04.4 LTS
            Kernel Version: 4.15.0-45-generic
            Boot Volume: overlay
            Boot Mode: Legacy BIOS
            Computer Name: 899309ef3feb
            User Name: root
            Time since boot: 21 weeks, 2 days, 6 hours, 47 minutes

      Hardware:
          Hardware Overview:
            Model: Unknown
            Model Identifier: Unknown
            Chip: Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
            Total Number of Cores: 40 (10 physical x 2 logical)
            Memory: 125Gi
            System Firmware Version: Unknown

      A DESCRIPTION OF THE PROBLEM :
      The HotSpot JVM crashes with a segmentation fault (SIGSEGV) when C2-compiled code attempts to call the .get() method of a WeakReference subclass where the instance is null. The crash is bypassed in interpreted mode (-Xint), indicating a miscompilation or an issue in the C2 intrinsic for Reference.get().

      REGRESSION : Java version that customer using for 11.0.30, 17.0.18



      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. javac Test.java
      2. java -Xcomp Test-> CRASH
      3. java -Xint Test-> Program finishes successfully.

      ---------- BEGIN SOURCE ----------
      import java.lang.ref.WeakReference;
      class Test {
          static final class MyReference<T> extends WeakReference<T> {
              public MyReference(T referent) {
                  super(referent);
              }
          }

          static void test(MyReference r) {
              try {
                  r.get();
              } catch (Exception e) {
              }
          }

          public static void main(String[] args) {
              MyReference<String[]> obj = new MyReference<>(args);
              for (int i = 0; i < 50000; ++i) {
                  test(null);
              }
          }
      }
      ---------- END SOURCE ----------

      FREQUENCY :
      ALWAYS

            Assignee:
            Unassigned
            Reporter:
            Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: