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

    XMLWordPrintable

Details

    • b27
    • x86_64
    • 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

                roland Roland Westrelin
                rraghavan Rahul Raghavan
                Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: