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

C2 compilation fails with "No reaching definition for liveout value"

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2
    • Resolution: Duplicate
    • Affects Version/s: 11, 16, 17
    • Fix Version/s: 17
    • Component/s: hotspot

      Description

      Running attached test MainClass.java:

      java -XX:CompileCommand=quiet -XX:CompileCommand=compileonly,MainClass::test -Xbatch -XX:+UseParallelGC MainClass

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/oracle/jdk/open/src/hotspot/share/opto/reg_split.cpp:1284), pid=78215, tid=78224
      # assert(Reachblock[slidx] != __null) failed: No reaching definition for liveout value

      Current CompileTask:
      C2: 377 25 b 4 MainClass::test (80 bytes)

      Stack: [0x00007fd43742f000,0x00007fd437530000], sp=0x00007fd43752ac80, free space=1007k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x164b5f7] PhaseChaitin::Split(unsigned int, ResourceArea*)+0x5487
      V [libjvm.so+0x8acbe6] PhaseChaitin::Register_Allocate()+0x5e6
      V [libjvm.so+0xa067c4] Compile::Code_Gen()+0x314
      V [libjvm.so+0xa1159c] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x19dc
      V [libjvm.so+0x83ce3a] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1ea
      V [libjvm.so+0xa21361] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xea1
      V [libjvm.so+0xa21fe8] CompileBroker::compiler_thread_loop()+0x5a8
      V [libjvm.so+0x1844636] JavaThread::thread_main_inner()+0x256
      V [libjvm.so+0x184a990] Thread::call_run()+0x100
      V [libjvm.so+0x1536ac6] thread_native_entry(Thread*)+0x116


      With JDK version < 16, it fails earlier:

      Bad graph detected in compute_lca_of_uses
      n: 476 Phi === 466 23 541 [[ 263 ]] #int:0..65493 !orig=418
      early(n): 466 Region === 466 465 532 [[ 466 411 550 474 475 476 477 480 483 ]]
      n->in(1): 23 ConI === 0 [[ 26 235 558 497 557 476 483 376 431 ]] #int:0
      early(n->in(1)): 0 Root === 0 326 327 267 [[ 0 1 3 22 23 24 312 282 262 253 233 84 85 91 92 105 106 231 215 187 174 161 147 146 339 555 556 345 694 695 ]]
      n->in(2): 541 Phi === 532 622 555 [[ 476 ]] #int:0..65493
      early(n->in(2)): 532 Region === 532 615 613 [[ 532 466 553 539 546 541 542 544 ]]
      n->in(2)->in(1): 622 Phi === 615 584 555 [[ 541 ]] #int:0..65493
      early(n->in(2)->in(1)): 615 Region === 615 614 531 [[ 615 532 617 620 622 623 625 628 ]]
      n->in(2)->in(2): 555 ConI === 0 [[ 622 584 541 ]] #int:-38
      early(n->in(2)->in(2)): 0 Root === 0 326 327 267 [[ 0 1 3 22 23 24 312 282 262 253 233 84 85 91 92 105 106 231 215 187 174 161 147 146 339 555 556 345 694 695 ]]

      LCA(n): 411 Region === 411 410 466 [[ 411 263 692 416 417 423 419 421 ]]
      n->out(0): 263 CallStaticJava === 411 37 250 8 9 ( 262 10 416 43 345 417 423 693 693 476 ) [[ 264 ]] # Static uncommon_trap(reason='unstable_if' action='reinterpret' debug_id='0') void ( int ) C=0,000100 Objects::requireNonNull @ bci:1 reexecute MainClass::test @ bci:44 !jvms: Objects::requireNonNull @ bci:1 MainClass::test @ bci:44
      n->out(0)->out(0): 264 Proj === 263 [[ 267 ]] #0 !jvms: Objects::requireNonNull @ bci:1 MainClass::test @ bci:44

      idoms of early 466:
      idom[0] 466 Region === 466 465 532 [[ 466 411 550 474 475 476 477 480 483 ]]
      idom[1] 456 If === 102 442 [[ 457 464 ]] P=0,099072, C=16382,000000 !orig=220,[256] !jvms: MainClass::test @ bci:32
      idom[2] 102 Proj === 101 [[ 456 ]] #0 !orig=[126],[135] !jvms: MainClass::test @ bci:-1
      idom[3] 101 MemBarRelease === 40 1 51 1 1 43 [[ 102 103 ]] !jvms: MainClass::test @ bci:-1
      idom[4] 40 Proj === 39 [[ 101 43 ]] #0 !jvms: MainClass::test @ bci:0
      idom[5] 39 Initialize === 31 1 42 1 1 38 95 88 [[ 40 41 ]] !jvms: MainClass::test @ bci:0
      idom[6] 31 CatchProj === 30 [[ 39 88 95 ]] #0@bci -1 !jvms: MainClass::test @ bci:0
      idom[7] 30 Catch === 27 29 [[ 31 32 ]] !jvms: MainClass::test @ bci:0
      idom[8] 27 Proj === 26 [[ 30 ]] #0 !jvms: MainClass::test @ bci:0
      idom[9] 26 Allocate === 5 6 7 8 1 ( 24 22 23 1 10 11 1 1 1 1 ) [[ 27 28 29 36 37 38 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, top ) MainClass::test @ bci:0 !jvms: MainClass::test @ bci:0
      idom[10] 5 Parm === 3 [[ 26 ]] Control !jvms: MainClass::test @ bci:-1

      idoms of (wrong) LCA 411:
      idom[0] 411 Region === 411 410 466 [[ 411 263 692 416 417 423 419 421 ]]
      idom[1] 456 If === 102 442 [[ 457 464 ]] P=0,099072, C=16382,000000 !orig=220,[256] !jvms: MainClass::test @ bci:32
      idom[2] 102 Proj === 101 [[ 456 ]] #0 !orig=[126],[135] !jvms: MainClass::test @ bci:-1
      idom[3] 101 MemBarRelease === 40 1 51 1 1 43 [[ 102 103 ]] !jvms: MainClass::test @ bci:-1
      idom[4] 40 Proj === 39 [[ 101 43 ]] #0 !jvms: MainClass::test @ bci:0
      idom[5] 39 Initialize === 31 1 42 1 1 38 95 88 [[ 40 41 ]] !jvms: MainClass::test @ bci:0
      idom[6] 31 CatchProj === 30 [[ 39 88 95 ]] #0@bci -1 !jvms: MainClass::test @ bci:0
      idom[7] 30 Catch === 27 29 [[ 31 32 ]] !jvms: MainClass::test @ bci:0
      idom[8] 27 Proj === 26 [[ 30 ]] #0 !jvms: MainClass::test @ bci:0
      idom[9] 26 Allocate === 5 6 7 8 1 ( 24 22 23 1 10 11 1 1 1 1 ) [[ 27 28 29 36 37 38 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, top ) MainClass::test @ bci:0 !jvms: MainClass::test @ bci:0
      idom[10] 5 Parm === 3 [[ 26 ]] Control !jvms: MainClass::test @ bci:-1

      Real LCA of early 466 (idom[1]) and (wrong) LCA 411 (idom[1]):
       456 If === 102 442 [[ 457 464 ]] P=0,099072, C=16382,000000 !orig=220,[256] !jvms: MainClass::test @ bci:32

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (workspace/open/src/hotspot/share/opto/loopnode.cpp:4121), pid=78044, tid=78052
      # assert(!had_error) failed: bad dominance

      Current CompileTask:
      C2: 265 2 b 4 MainClass::test (80 bytes)

      Stack: [0x00007f1cba5e5000,0x00007f1cba6e6000], sp=0x00007f1cba6e0570, free space=1005k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x118c2cc] PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)+0x81c
      V [libjvm.so+0x118cae0] PhaseIdealLoop::build_loop_late_post_work(Node*, bool)+0x190
      V [libjvm.so+0x118d12a] PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)+0xba
      V [libjvm.so+0x1192c9c] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x6cc
      V [libjvm.so+0x90d5ed] PhaseIdealLoop::verify(PhaseIterGVN&)+0x31d
      V [libjvm.so+0x90b09b] Compile::Optimize()+0xf5b
      V [libjvm.so+0x90c95c] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x15ac
      V [libjvm.so+0x759695] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x175
      V [libjvm.so+0x91b9c0] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xd60
      V [libjvm.so+0x91c788] CompileBroker::compiler_thread_loop()+0x6c8
      V [libjvm.so+0x16ca5cc] JavaThread::thread_main_inner()+0x21c
      V [libjvm.so+0x16d0310] Thread::call_run()+0x100
      V [libjvm.so+0x13d49a6] thread_native_entry(Thread*)+0x116


      With a product build, we crash in Node::rematerialize():

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # SIGSEGV (0xb) at pc=0x00007ff5c79b9660, pid=78777, tid=78784

      Current CompileTask:
      C2: 93 1 b MainClass::test (80 bytes)

      Stack: [0x00007ff59d9b5000,0x00007ff59dab6000], sp=0x00007ff59dab11f8, free space=1008k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0xbdc660] Node::rematerialize() const+0x0
      V [libjvm.so+0x5652be] PhaseChaitin::Register_Allocate()+0x51e
      V [libjvm.so+0x60cbe7] Compile::Code_Gen()+0x297
      V [libjvm.so+0x612ba3] Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x10f3
      V [libjvm.so+0x53db8c] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0xbc
      V [libjvm.so+0x61ad6b] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x47b
      V [libjvm.so+0x61c218] CompileBroker::compiler_thread_loop()+0x4e8
      V [libjvm.so+0xdcf677] JavaThread::thread_main_inner()+0x1f7
      V [libjvm.so+0xdd433d] Thread::call_run()+0x10d
      V [libjvm.so+0xc12d87] thread_native_entry(Thread*)+0xe7

        Attachments

        1. hs_err_pid78044.log
          38 kB
        2. hs_err_pid78215.log
          45 kB
        3. MainClass.java
          0.6 kB

          Issue Links

            Activity

              People

              Assignee:
              thartmann Tobias Hartmann
              Reporter:
              thartmann Tobias Hartmann
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: