JDK-8216135 : C2 assert(!had_error) failed: bad dominance
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,12
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2019-01-03
  • Updated: 2019-11-13
  • Resolved: 2019-01-15
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 12 JDK 13
11.0.6-oracleFixed 12 b28Fixed 13Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Sub Tasks
JDK-8216266 :  
Description
compiler/loopopts/PeelingZeroTripCount.java in the run w/ "-XX:+CreateCoredumpOnCrash -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation" failed due to "assert(!had_error) failed: bad dominance" at open/src/hotspot/share/opto/loopnode.cpp:3892

Bad graph detected in compute_lca_of_uses
n:  591	CastII	===  626  592  [[ 509 ]]  #bool range check dependency !orig=[192] !jvms: PeelingZeroTripCount::test @ bci:46
early(n):  626	IfTrue	===  613  [[ 591  629 ]] #1 !orig=169,[180] !jvms: PeelingZeroTripCount::test @ bci:38
n->in(1):  592	AddI	=== _  609  26  [[ 591 ]]  !orig=[176] !jvms: PeelingZeroTripCount::test @ bci:45
early(n->in(1)):  611	CountedLoop	===  611  362  308  [[ 611  612  613 ]] inner stride: 2 main of N611 strip mined !orig=[363],[337],[154] !jvms: PeelingZeroTripCount::test @ bci:23
n->in(1)->in(1):  609	SubI	=== _  107  610  [[ 592 ]]  !orig=[175] !jvms: PeelingZeroTripCount::test @ bci:45
early(n->in(1)->in(1)):  611	CountedLoop	===  611  362  308  [[ 611  612  613 ]] inner stride: 2 main of N611 strip mined !orig=[363],[337],[154] !jvms: PeelingZeroTripCount::test @ bci:23
n->in(1)->in(2):  26	ConI	===  0  [[ 592  112  371  452  664 ]]  #int:-1
early(n->in(1)->in(2)):  0	Root	===  0  81  94  134  146  189  213  229  250  271  286  332  333  553  577  [[ 0  1  3  22  23  300  26  28  299  30  215  208  200  190  184  39  61  63  76  89  347  365  530  541  555  565  582  665  672  682  685  715  720  729  736 ]] 

LCA(n):  647	Region	===  647  646  224  [[ 647  508  655 ]] 
n->out(0):  509	Phi	===  508  451  591  [[ 428 ]]  #int:0..3
later(n->out(0)):  508	Region	===  508  507  647  [[ 508  427  509  516 ]] 
n->out(0)->out(0):  428	Phi	===  427  370  509  [[ 193 ]]  #int:0..3
later(n->out(0)->out(0)):  427	Region	===  427  426  508  [[ 427  225  428  433  197  678 ]] 

idom[0]  647	Region	===  647  646  224  [[ 647  508  655 ]] 
idom[1]  613	If	===  611  597  [[ 614  626 ]] P=0.399885, C=10448.000000 !orig=168 !jvms: PeelingZeroTripCount::test @ bci:38
idom[2]  611	CountedLoop	===  611  362  308  [[ 611  612  613 ]] inner stride: 2 main of N611 strip mined !orig=[363],[337],[154] !jvms: PeelingZeroTripCount::test @ bci:23
idom[3]  362	OuterStripMinedLoop	===  362  575  361  [[ 362  611 ]] 
idom[4]  575	IfTrue	===  573  [[ 362 ]] #1
idom[5]  573	If	===  551  572  [[ 574  575 ]] P=0.999999, C=-1.000000
idom[6]  551	IfTrue	===  549  [[ 573 ]] #1
idom[7]  549	If	===  526  548  [[ 550  551 ]] P=0.999999, C=-1.000000
idom[8]  526	IfTrue	===  525  [[ 527  549 ]] #1
idom[9]  525	If	===  521  524  [[ 494  526 ]] P=0.999999, C=-1.000000
idom[10]  521	IfFalse	===  484  [[ 525 ]] #0
idom[11]  484	CountedLoopEnd	===  483  463  [[ 485  521 ]] [lt] P=0.500000, C=10448.000000 !orig=358,[307] !jvms: PeelingZeroTripCount::test @ bci:20
idom[12]  483	Region	===  483  481  493  [[ 484  483 ]]  !orig=238,297 !jvms: PeelingZeroTripCount::test @ bci:70
idom[13]  473	If	===  471  457  [[ 474  486 ]] P=0.399885, C=10448.000000 !orig=168 !jvms: PeelingZeroTripCount::test @ bci:38
idom[14]  471	CountedLoop	===  471  147  485  [[ 471  472  473 ]] inner stride: 1 pre of N363 !orig=[363],[337],[154] !jvms: PeelingZeroTripCount::test @ bci:23
idom[15]  147	IfTrue	===  138  [[ 471 ]] #1 !jvms: PeelingZeroTripCount::test @ bci:20
idom[16]  138	If	===  135  137  [[ 139  147 ]] P=0.999999, C=-1.000000 !jvms: PeelingZeroTripCount::test @ bci:20
idom[17]  135	IfTrue	===  126  [[ 138 ]] #1 !orig=[352] !jvms: PeelingZeroTripCount::test @ bci:20
idom[18]  126	If	===  120  125  [[ 127  135 ]] P=0.999999, C=-1.000000 !jvms: PeelingZeroTripCount::test @ bci:20
idom[19]  120	IfFalse	===  118  [[ 126 ]] #0 !jvms: PeelingZeroTripCount::test @ bci:20
idom[20]  118	If	===  345  117  [[ 119  120 ]] P=0.285753, C=14628.000000 !jvms: PeelingZeroTripCount::test @ bci:20
idom[21]  345	CountedLoop	===  345  95  343  [[ 345  118  107 ]] stride: -1  !orig=[336],[102] !jvms: PeelingZeroTripCount::test @ bci:12
idom[22]  95	IfTrue	===  85  [[ 345 ]] #1 !jvms: PeelingZeroTripCount::test @ bci:9
idom[23]  85	If	===  82  84  [[ 86  95 ]] P=0.999999, C=-1.000000 !jvms: PeelingZeroTripCount::test @ bci:9
idom[24]  82	IfTrue	===  72  [[ 85 ]] #1 !jvms: PeelingZeroTripCount::test @ bci:9
idom[25]  72	If	===  55  71  [[ 73  82 ]] P=0.999999, C=-1.000000 !jvms: PeelingZeroTripCount::test @ bci:9
idom[26]  55	Proj	===  54  [[ 72  58 ]] #0 !jvms: PeelingZeroTripCount::test @ bci:3
idom[27]  54	Initialize	===  46  1  57  1  1  53  [[ 55  56 ]]  !jvms: PeelingZeroTripCount::test @ bci:3
idom[28]  46	CatchProj	===  45  [[ 54 ]] #0@bci -1  !jvms: PeelingZeroTripCount::test @ bci:3
idom[29]  45	Catch	===  42  44  [[ 46  47 ]]  !jvms: PeelingZeroTripCount::test @ bci:3
idom[30]  42	Proj	===  41  [[ 45 ]] #0 !jvms: PeelingZeroTripCount::test @ bci:3
idom[31]  41	AllocateArray	===  5  6  7  8  1 ( 39  23  28  22  1  11  1  1  1  1  1 ) [[ 42  43  44  51  52  53 ]]  rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) PeelingZeroTripCount::test @ bci:3 !jvms: PeelingZeroTripCount::test @ bci:3
idom[32]  5	Parm	===  3  [[ 41 ]] Control !jvms: PeelingZeroTripCount::test @ bci:-1

*** Use 647 isn't dominated by def 591 ***
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/loopnode.cpp:3892
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/mach5/mesos/work_dir/slaves/2dd962d0-8988-479b-a804-57ab764ada59-S6351/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/f2e63c67-8c29-40c4-8657-157f644ef035/runs/ccb34d63-bcb4-4f5f-aedb-20c63626d0b3/workspace/open/src/hotspot/share/opto/loopnode.cpp:3892), pid=9571, tid=9588
#  assert(!had_error) failed: bad dominance
#
# JRE version: Java(TM) SE Runtime Environment (12.0) (fastdebug build 12-internal+0-jdk12-jdk.1178)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 12-internal+0-jdk12-jdk.1178, mixed mode, sharing, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x125ec5a]  PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)+0x2fa
#
# Core dump will be written. Default location: /scratch/opt/mach5/mesos/work_dir/slaves/2dd962d0-8988-479b-a804-57ab764ada59-S1512/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/d7f1109e-cb3a-4516-9def-0f9b6215186e/runs/33a473b1-2684-4c02-8548-c1afea080030/testOutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_3/scratch/2/core.9571
#
# An error report file with more information is saved as:
# /scratch/opt/mach5/mesos/work_dir/slaves/2dd962d0-8988-479b-a804-57ab764ada59-S1512/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/d7f1109e-cb3a-4516-9def-0f9b6215186e/runs/33a473b1-2684-4c02-8548-c1afea080030/testOutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_3/scratch/2/hs_err_pid9571.log
#
# Compiler replay data is saved as:
# /scratch/opt/mach5/mesos/work_dir/slaves/2dd962d0-8988-479b-a804-57ab764ada59-S1512/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/d7f1109e-cb3a-4516-9def-0f9b6215186e/runs/33a473b1-2684-4c02-8548-c1afea080030/testOutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_compiler_3/scratch/2/replay_pid9571.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
Comments
Fix Request (11u) This fixes important C2 compiler bug and matches the codebases (I see 11.0.6-oracle). Patch applies cleanly to 11u, apart from missing chunk that removes the test from problem list (was added in JDK-8216266). Passes tier1 and tier2 tests; the referenced test does not fail with current 11u, however.
02-09-2019

verified in regular testing.
12-02-2019

ILW = Assert during compilation (loopopts), frequent with regression test added by JDK-8215044, disable loop opts or compilation of affected method = HMM = P2
04-01-2019

happened in the testing w/ only one new changeset -- JDK-8215265. [~roland], could you please take a look?
03-01-2019