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

C2 compilation fails with assert: Bad graph detected in build_loop_late

    Details

    • Subcomponent:
    • Introduced In Build:
      b07
    • Introduced In Version:
      13
    • Resolved In Build:
      b10
    • Verification:
      Verified

      Description

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (open/src/hotspot/share/opto/loopnode.cpp:4290), pid=25095, tid=25126
      # assert(false) failed: Bad graph detected in build_loop_late
      #
      # JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-ea+0-1128)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-ea+0-1128, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x11d0ece] PhaseIdealLoop::build_loop_late_post_work(Node*, bool)+0x1ae
      #
      # Core dump will be written. Default location: scratch/0/core.25095
      #

      ...

      Stack: [0x00007fc96006f000,0x00007fc960170000], sp=0x00007fc96016a340, free space=1004k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x11d0ece] PhaseIdealLoop::build_loop_late_post_work(Node*, bool)+0x1ae
      V [libjvm.so+0x11d15d5] PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)+0xd5
      V [libjvm.so+0x11d6351] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x771
      V [libjvm.so+0x9c3112] PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x2a2
      V [libjvm.so+0x9bfcff] Compile::Optimize()+0x3cf
      V [libjvm.so+0x9c1b6a] Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x11ba
      V [libjvm.so+0x802c4d] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x10d
      V [libjvm.so+0x9ce4ed] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x46d
      V [libjvm.so+0x9cf4e8] CompileBroker::compiler_thread_loop()+0x3b8
      V [libjvm.so+0x16c2dba] JavaThread::thread_main_inner()+0x26a
      V [libjvm.so+0x16cb367] JavaThread::run()+0x227
      V [libjvm.so+0x16c8496] Thread::call_run()+0xf6
      V [libjvm.so+0x13e38be] thread_native_entry(Thread*)+0x10e

      [stress.process.err] Bad graph detected in build_loop_late
      [stress.process.err] n: 777 LoadD === _ 7 344 [[ 787 ]] @java/lang/Double:exact+16 *, name=value, idx=11; #double !orig=[345] !jvms: Double::compareTo @ bci:1 Double::compareTo @ bci:5 ConcurrentSkipListMap::cpr @ bci:20 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] early(n): 766 IfFalse === 765 [[ 295 769 ]] #0 !orig=[293] !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] n->in(1): 7 Parm === 3 [[ 318 287 785 27 31 35 36 101 40 55 63 139 152 126 777 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[119] !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] early(n->in(1)): 3 StartOSR === 3 0 [[ 3 5 6 7 8 9 10 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:rawptr:BotPTR}
      [stress.process.err] n->in(2): 344 AddP === _ 295 295 232 [[ 777 776 ]] Oop:java/lang/Double:NotNull:exact+16 * !jvms: Double::compareTo @ bci:1 Double::compareTo @ bci:5 ConcurrentSkipListMap::cpr @ bci:20 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] early(n->in(2)): 766 IfFalse === 765 [[ 295 769 ]] #0 !orig=[293] !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] n->in(2)->in(1): 295 CheckCastPP === 766 277 [[ 724 427 344 344 328 ]] #java/lang/Double:NotNull:exact * Oop:java/lang/Double:NotNull:exact * !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] early(n->in(2)->in(1)): 766 IfFalse === 765 [[ 295 769 ]] #0 !orig=[293] !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] n->in(2)->in(2): 295 CheckCastPP === 766 277 [[ 724 427 344 344 328 ]] #java/lang/Double:NotNull:exact * Oop:java/lang/Double:NotNull:exact * !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] early(n->in(2)->in(2)): 766 IfFalse === 765 [[ 295 769 ]] #0 !orig=[293] !jvms: ConcurrentSkipListMap::cpr @ bci:16 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] n->in(2)->in(3): 232 ConL === 0 [[ 233 344 346 712 ]] #long:16
      [stress.process.err] early(n->in(2)->in(3)): 0 Root === 0 114 133 146 159 180 196 213 229 268 285 303 332 413 431 733 [[ 0 1 3 20 21 24 26 709 30 610 34 43 46 53 57 60 79 91 109 128 141 154 175 191 199 232 608 280 289 298 372 389 606 601 599 538 536 535 ]]
      [stress.process.err]
      [stress.process.err] LCA(n): 160 IfTrue === 150 [[ 783 ]] #1 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] n->out(0): 787 Phi === 783 777 782 [[ 774 ]] #double !orig=774,[345] !jvms: Double::compareTo @ bci:1 Double::compareTo @ bci:5 ConcurrentSkipListMap::cpr @ bci:20 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] later(n->out(0)): 783 Loop === 783 160 778 [[ 783 788 784 785 786 787 ]] !orig=[161] !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] n->out(0)->out(0): 774 Phi === 788 787 774 [[ 385 364 391 376 385 774 ]] #double !orig=[345] !jvms: Double::compareTo @ bci:1 Double::compareTo @ bci:5 ConcurrentSkipListMap::cpr @ bci:20 ConcurrentSkipListMap::findPredecessor @ bci:80
      [stress.process.err] later(n->out(0)->out(0)): 788 Loop === 788 783 724 [[ 788 774 164 163 165 172 ]] inner !orig=[161] !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err]
      [stress.process.err] idom[0] 160 IfTrue === 150 [[ 783 ]] #1 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[1] 150 If === 147 149 [[ 151 160 ]] P=0.999999, C=-1.000000 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[2] 147 IfTrue === 137 [[ 150 ]] #1 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[3] 137 If === 134 136 [[ 138 147 ]] P=0.999999, C=-1.000000 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[4] 134 IfTrue === 124 [[ 137 ]] #1 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[5] 124 If === 92 123 [[ 125 134 ]] P=0.999999, C=-1.000000 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[6] 92 Region === 92 744 97 [[ 92 93 124 ]] !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[7] 96 If === 44 95 [[ 97 98 ]] P=0.999000, C=-1.000000 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[8] 44 Region === 44 71 50 [[ 44 45 96 ]] !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[9] 49 If === 37 48 [[ 50 51 ]] P=0.999000, C=-1.000000 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[10] 37 Proj === 36 [[ 49 ]] #0 !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[11] 36 CallLeaf === 5 1 7 8 1 ( 10 ) [[ 37 39 ]] # OSR_migration_end void ( rawptr:BotPTR ) !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18
      [stress.process.err] idom[12] 5 Parm === 3 [[ 35 36 27 31 ]] Control !jvms: ConcurrentSkipListMap::findPredecessor @ bci:18

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: