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

JVM crashes after transformation in C2 IdealLoopTree::split_fall_in

XMLWordPrintable

    • b23
    • generic
    • generic
    • Verified

        Reduced fuzz test case:

        public class TestBeautifyLoops_2 {

            private class X {
                public int x() {
                    return -1;
                }
            }

            private int mI = 0;
            private float mF = 0;
            private boolean mZ = false;
            private X mX = new X();
            private long[] mArray = new long[331];

            private void testMethod() {
                double d = 0;

                for (int i = 0; i < 331; i++) {
                    if (mZ) {
                        continue;
                    }

                    try {
                        for (int j = mArray.length - 1; j >= 0; j--) {
                            {
                                for (int k = 0; k < 331; k++) {
                                    d += ((double) new Double(d));
                                    switch (267) {
                                        case 256:
                                        default: {
                                            mF += (mX.x());
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    } catch (Exception ignore) {
                    }
                }
            }

            public static void main(String[] args) {
                TestBeautifyLoops_2 obj = new TestBeautifyLoops_2();
                obj.testMethod();
            }

        }

        Command line: java -Xcomp -XX:-BackgroundCompilation -XX:CompileCommand=compileonly,TestBeautifyLoops_2::testMethod TestBeautifyLoops_2

        JVM crashes on x86-64 linux:
        # To suppress the following error report, specify this argument
        # after -XX: or in .hotspotrc: SuppressErrorAt=/loopnode.cpp:2258
        #
        # A fatal error has been detected by the Java Runtime Environment:
        #
        # Internal Error (/home/yangfei/openjdk-jdk/src/hotspot/share/opto/loopnode.cpp:2258), pid=33823, tid=33837
        # assert(_phase->is_dominator(_head, nlpt->_head)) failed: inner head dominated by outer head
        #
        # JRE version: OpenJDK Runtime Environment (15.0) (slowdebug build 15-internal+0-adhoc.yangfei.openjdk-jdk)
        # Java VM: OpenJDK 64-Bit Server VM (slowdebug 15-internal+0-adhoc.yangfei.openjdk-jdk, compiled mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
        # Problematic frame:
        # V [libjvm.so+0xd24378] IdealLoopTree::check_safepts(VectorSet&, Node_List&)+0x2f4
        #
        # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P %E" (or dumping to /home/yangfei/576/core.33823)
        #
        # An error report file with more information is saved as:
        # /home/yangfei/576/hs_err_pid33823.log
        #
        # Compiler replay data is saved as:
        # /home/yangfei/576/replay_pid33823.log

        Call trace:
        18 --------------- S U M M A R Y ------------
         19
         20 Command Line: -Xcomp -XX:-BackgroundCompilation -XX:CompileCommand=compileonly,TestBeautifyLoops_2::testMethod TestBeautifyLoops_2
         21
         22 Host: ubuntu18, Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz, 48 cores, 377G, Ubuntu 18.04.2 LTS
         23 Time: Tue May 5 15:59:46 2020 CST elapsed time: 0.589157 seconds (0d 0h 0m 0s)
         24
         25 --------------- T H R E A D ---------------
         26
         27 Current thread (0x00007f9470362000): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=33837, stack(0x00007f93fd03c000,0x00007f93fd13d000)]
         28
         29
         30 Current CompileTask:
         31 C2: 589 3 % !b 4 TestBeautifyLoops_2::testMethod @ 38 (121 bytes)
         32
         33 Stack: [0x00007f93fd03c000,0x00007f93fd13d000], sp=0x00007f93fd1373f0, free space=1004k
         34 Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
         35 V [libjvm.so+0xd24378] IdealLoopTree::check_safepts(VectorSet&, Node_List&)+0x2f4
         36 V [libjvm.so+0xd240cd] IdealLoopTree::check_safepts(VectorSet&, Node_List&)+0x49
         37 V [libjvm.so+0xd26fcd] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x7d9
         38 V [libjvm.so+0x6f69a7] PhaseIdealLoop::PhaseIdealLoop(PhaseIterGVN&, LoopOptsMode)+0xb3
         39 V [libjvm.so+0x6f6aa2] PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x46
         40 V [libjvm.so+0x6eae1a] Compile::Optimize()+0x580
         41 V [libjvm.so+0x6e4745] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x10e9
         42 V [libjvm.so+0x5e2185] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x141
         43 V [libjvm.so+0x6fee46] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x7f0
         44 V [libjvm.so+0x6fdb61] CompileBroker::compiler_thread_loop()+0x3dd
         45 V [libjvm.so+0x114c765] compiler_thread_entry(JavaThread*, Thread*)+0x69
         46 V [libjvm.so+0x1147985] JavaThread::thread_main_inner()+0x149
         47 V [libjvm.so+0x1147833] JavaThread::run()+0x11f
         48 V [libjvm.so+0x1143aa0] Thread::call_run()+0x180
         49 V [libjvm.so+0xeb4ac0] thread_native_entry(Thread*)+0x1e4

              fyang Fei Yang
              fyang Fei Yang
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: