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

C2 crash in loopTransform.cpp with assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop

    Details

    • Subcomponent:
    • Resolved In Build:
      b27
    • CPU:
      x86_64
    • Verification:
      Verified

      Backports

        Description

        Attached Test.java
        -----------------
        public class Test {
            public static void main(String[] args) {
                Test issue = new Test();
                for (int i = 0; i < 10000; i++) {
                    issue.test(new int[999]);
                }
            }
            public void test (int[] iaarg) {
                int[] iarr = new int[777];
                for (int i = 4; i > 0; i--) {
                    for (int j = 0; j <= i - 1; j++) {
                        int istep = 2 * j - i + 1;
                        int iadj = 0;
                        if (istep < 0) {
                            iadj = iarr[0-istep] + iaarg[i-1];
                        } else {
                            iadj = iarr[istep] + iaarg[i-1];
                        }
                    }
                }
            }
        }
        -----------------

        $ javac Test.java
        $ java -XX:CompileOnly=Test.test Test
        # A fatal error has been detected by the Java Runtime Environment:
        #
        # Internal Error (/home/rvraghav/data/build/jdk-jdk/open/src/hotspot/share/opto/loopTransform.cpp:567), pid=5452, tid=5464
        # assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop
        #
        # JRE version: Java(TM) SE Runtime Environment (12.0) (slowdebug build 12-internal+0-2018-12-07-1555497.rvraghav.null)
        # Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 12-internal+0-2018-12-07-1555497.rvraghav.null, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
        # Problematic frame:
        # V [libjvm.so+0xe1561c] PhaseIdealLoop::do_peeling(IdealLoopTree*, Node_List&)+0xce
        #
        <attached hs_err_pid5452.log>

        Found this case when working for JDK-8211698.
        (not sure if same root cause / duplicate of JDK-8211698)
        Also can be related to JDK-8193130.

        Failures present with current latest JDK 12 sources build.
        (unlike 8211698 case, here reverting just 8193130 fix is NOT solving the failure)


        Found minor changes in above test case can cause different type failures for different versions -
        .e.g. failures:
         - (Original issue handled by JDK-8193130) - assert(false) failed: Bad graph detected in build_loop_late
         - SIGILL failure (as in JDK-8211698)
        (some failures reproducible even with JDK10b46)

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  roland Roland Westrelin
                  Reporter:
                  rraghavan Rahul Raghavan
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: