Crash in Node::verify due to missing bailout check after process_for_post_loop_opts_igvn

XMLWordPrintable

      Crash in Node::verify due to missing bailout check after process_for_post_loop_opts_igvn

      reproduce by running some arbitrary tests with flags -XX:VerifyIterativeGVN=1111 -XX:+StressBailout XX:StressBailoutMean=1000.

      Regardless of the artificial setting (combining two debugging modes) the problem seems to be a missing bailout check here:

      https://github.com/openjdk/jdk/blob/560a92a6327221c90596bcd17a87722e4910472a/src/hotspot/share/opto/compile.cpp#L2526

      after JDK-8351414.

      ===

      # SIGSEGV (0xb) at pc=0x00007fdb3d381146, pid=254005, tid=254027
      #
      # JRE version: Java(TM) SE Runtime Environment (27.0) (fastdebug build <...>)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug <...>, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x1781146] Node::verify(int, VectorSet&, Node_List&)+0xa6


      (Saw the crash on Test7046096_stringConcatInline)

      ===

      Current CompileTask:
      C2:6275 2565 4 com.sun.tools.javac.parser.UnicodeReader::next (9 bytes)

      Stack: [0x00007fa68f7f9000,0x00007fa68f8f9000], sp=0x00007fa68f8f3e20, free space=1003k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x1781146] Node::verify(int, VectorSet&, Node_List&)+0xa6 (node.cpp:2739)
      V [libjvm.so+0x188b8a1] PhaseIterGVN::verify_step(Node*) [clone .part.0]+0x581 (phaseX.cpp:865)
      V [libjvm.so+0x189ad5a] PhaseIterGVN::transform_old(Node*)+0x70a (phaseX.cpp:2136)
      V [libjvm.so+0x189f575] PhaseIterGVN::optimize()+0xc5 (phaseX.cpp:1054)
      V [libjvm.so+0xbac8d4] Compile::process_for_merge_stores_igvn(PhaseIterGVN&)+0x124 (compile.cpp:1940)
      V [libjvm.so+0xbb2025] Compile::Optimize()+0xd15 (compile.cpp:2527)
      V [libjvm.so+0xbb5173] Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x2023 (compile.cpp:862)
      V [libjvm.so+0x9cc328] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x498 (c2compiler.cpp:147)
      V [libjvm.so+0xbc4660] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x780 (compileBroker.cpp:2345)
      V [libjvm.so+0xbc5ec0] CompileBroker::compiler_thread_loop()+0x530 (compileBroker.cpp:1989)
      V [libjvm.so+0x112511b] JavaThread::thread_main_inner()+0x13b (javaThread.cpp:776)
      V [libjvm.so+0x1bb14f6] Thread::call_run()+0xb6 (thread.cpp:242)
      V [libjvm.so+0x1807098] thread_native_entry(Thread*)+0x118 (os_linux.cpp:860)

      siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000038

      Pending compilation failure details for thread 0x00007fa6c0209ae0:
        Time: 6.270886 seconds (0d 0h 0m 6s) Compile id: 2565
        Reason: 'StressBailout'
        Callstack:
      [0x00007fa6c6dab6f2]Compile::failing() [clone .part.0]+0x62 (compile.hpp:840)
      [0x00007fa6c6dac707]Compile::process_for_post_loop_opts_igvn(PhaseIterGVN&)+0x277 (compile.cpp:1893)
      [0x00007fa6c6db201a]Compile::Optimize()+0xd0a (compile.cpp:2527)
      [0x00007fa6c6db5173]Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x2023 (cHeapStringHolder.hpp:47)

            Assignee:
            Daniel Skantz
            Reporter:
            Daniel Skantz
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: