JDK-8215755 : ZGC: split_barrier_thru_phi: check number of inputs of phi
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,12
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2018-12-20
  • Updated: 2019-09-04
  • Resolved: 2019-01-09
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 b27Fixed 13Fixed
Description
Application crashes with ZGC enabled in JDK12-24 ATR.
The hs_err:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/scratch/opt/mach5/mesos/work_dir/slaves/2dd962d0-8988-479b-a804-57ab764ada59-S77535/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/56deddd2-d67f-4632-ac9a-f3da8a999613/runs/9a7f1803-e7b2-4251-8f1b-dc3b9beae226/workspace/open/src/hotspot/share/opto/node.hpp:372), pid=3177, tid=3224
#  assert(i < _max) failed: oob: i=2, _max=2
#
# JRE version: Java(TM) SE Runtime Environment (12.0+24) (fastdebug build 12-ea+24)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 12-ea+24, mixed mode, tiered, z gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x191d64d]  Node::in(unsigned int) const [clone .isra.45] [clone .constprop.221]+0x2d
#
# Core dump will be written. Default location: ..
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
---------------  S U M M A R Y ------------

Command Line: -Dhadoop.home.dir=/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1 -Dspark.master=local[2] -Dspark.sql.warehouse.dir=spark_tmp -Djava.io.tmpdir=spark_tmp -XX:MaxRAMPercentage=8 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Djava.net.preferIPv4Stack=true -Xmx15088M -XX:-PrintVMOptions -XX:+DisplayVMOutputToStderr -XX:+UsePerfData -Xlog:gc*:gc.log -XX:+DisableExplicitGC -XX:+PrintFlagsFinal -XX:+HeapDumpOnOutOfMemoryError -XX:+CrashOnOutOfMemoryError -Dhadoop.root.logger=WARN,console -DSEED=1544911299 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED applications.spark.ExampleLoop /scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/spark/spark/2.4.0/spark-2.4.0-bin-without-hadoop-scala-2.12.tar.gz/spark-2.4.0-bin-without-hadoop-scala-2.12/jars/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/spark/spark/2.4.0/spark-2.4.0-bin-without-hadoop-scala-2.12.tar.gz/spark-2.4.0-bin-without-hadoop-scala-2.12/examples/jars/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/etc/hadoop:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/common/lib/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/common/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/hdfs:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/hdfs/lib/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/hdfs/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/mapreduce/lib/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/mapreduce/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/yarn:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/yarn/lib/*:/scratch/opt/mach5/mesos/work_dir/jib-master/install/org/apache/hadoop/common/hadoop/3.1.1/hadoop-3.1.1.tar.gz/hadoop-3.1.1/share/hadoop/yarn/* 1440

Host: Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz, 6 cores, 29G, Oracle Linux Server release 7.1
Time: Sat Dec 15 18:41:23 2018 PST elapsed time: 16783 seconds (0d 4h 39m 43s)

---------------  T H R E A D  ---------------

Current thread (0x00007f9f8026bb70):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=3224, stack(0x00007f9f5aeff000,0x00007f9f5b000000)]


Current CompileTask:
C2:16783410 50844       4       java.net.URI::normalize (65 bytes)

Stack: [0x00007f9f5aeff000,0x00007f9f5b000000],  sp=0x00007f9f5affa310,  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+0x191d64d]  Node::in(unsigned int) const [clone .isra.45] [clone .constprop.221]+0x2d
V  [libjvm.so+0x19252db]  ZBarrierSetC2::loop_optimize_gc_barrier(PhaseIdealLoop*, Node*, bool)+0x4db
V  [libjvm.so+0x126d0ba]  PhaseIdealLoop::split_if_with_blocks_post(Node*, bool)+0x9a
V  [libjvm.so+0x126e0f0]  PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&, bool)+0x1f0
V  [libjvm.so+0x12648c2]  PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x1152
V  [libjvm.so+0xa0309d]  Compile::Optimize()+0x39d
V  [libjvm.so+0xa0499c]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0xd6c
V  [libjvm.so+0x804431]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0xd1
V  [libjvm.so+0xa12289]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x409
V  [libjvm.so+0xa133a8]  CompileBroker::compiler_thread_loop()+0x458
V  [libjvm.so+0x17b78d7]  JavaThread::thread_main_inner()+0x2c7
V  [libjvm.so+0x17b7bac]  JavaThread::run()+0x1cc
V  [libjvm.so+0x17b35b5]  Thread::call_run()+0x75
V  [libjvm.so+0x149e676]  thread_native_entry(Thread*)+0x106

Register to memory mapping:

RAX=0x00007f9f8968a000 points into unknown readable memory: 58 00 00 00 00 00 00 00
RBX=0x00007f9c44712ffc points into unknown readable memory: 02 00 00 00
RCX=0x00007f9c44712bb4 points into unknown readable memory: 05 00 00 00
RDX=0x00007f9f5affdd01 is pointing into the stack for thread: 0x00007f9f8026bb70
RSP=0x00007f9f5affa310 is pointing into the stack for thread: 0x00007f9f8026bb70
RBP=0x00007f9f5affa320 is pointing into the stack for thread: 0x00007f9f8026bb70
RSI=0x00007f9c44712ffc points into unknown readable memory: 02 00 00 00
RDI=0x00007f9c44712fe8 points into unknown readable memory: 58 30 71 44 9c 7f 00 00
R8 =0x00007f9c44712ca0 points into unknown readable memory: 28 70 74 88 9f 7f 00 00
R9 =0x0101010101010101 is an unknown value
R10=0x0 is NULL
R11=0x00007f9f888f1a9a: <offset 0x0000000000089a9a> in /lib64/libc.so.6 at 0x00007f9f88868000
R12=0x00007f9c44712fe8 points into unknown readable memory: 58 30 71 44 9c 7f 00 00
R13=0x00007f9f5affb7e0 is pointing into the stack for thread: 0x00007f9f8026bb70
R14=0x00007f9f5affc390 is pointing into the stack for thread: 0x00007f9f8026bb70
R15=0x00007f9c44712b98 points into unknown readable memory: 10 38 72 88 9f 7f 00 00


Registers:
RAX=0x00007f9f8968a000, RBX=0x00007f9c44712ffc, RCX=0x00007f9c44712bb4, RDX=0x00007f9f5affdd01
RSP=0x00007f9f5affa310, RBP=0x00007f9f5affa320, RSI=0x00007f9c44712ffc, RDI=0x00007f9c44712fe8
R8 =0x00007f9c44712ca0, R9 =0x0101010101010101, R10=0x0000000000000000, R11=0x00007f9f888f1a9a
R12=0x00007f9c44712fe8, R13=0x00007f9f5affb7e0, R14=0x00007f9f5affc390, R15=0x00007f9c44712b98
RIP=0x00007f9f87f7e64d, EFLAGS=0x0000000000010246, CSGSFS=0x0000000000000033, ERR=0x0000000000000006
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007f9f5affa310)
0x00007f9f5affa310:   00007f9c44712fe0 00007f9c44712ffc
0x00007f9f5affa320:   00007f9f5affa430 00007f9f87f862db
0x00007f9f5affa330:   00007f9c44712b98 0000000000000003
0x00007f9f5affa340:   00007f9f5affb7e0 00007f9c73c03aa0 

Instructions: (pc=0x00007f9f87f7e64d)
0x00007f9f87f7e62d:   76 11 49 8b 04 24 5b 41 5c 48 8b 40 10 5d c3 0f
0x00007f9f87f7e63d:   1f 40 00 48 8d 05 89 8f 7d 00 48 89 f3 48 8b 00
0x00007f9f87f7e64d:   c6 00 58 e8 8b 1a 1c ff 84 c0 75 3f 44 8b 0b 48
0x00007f9f87f7e65d:   8d 0d bc ef 07 00 48 8d 15 c8 ef 07 00 48 8d 3d 

Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007f9c44712fe0 points into unknown readable memory: d8 70 71 88 9f 7f 00 00
stack at sp + 1 slots: 0x00007f9c44712ffc points into unknown readable memory: 02 00 00 00
stack at sp + 2 slots: 0x00007f9f5affa430 is pointing into the stack for thread: 0x00007f9f8026bb70
stack at sp + 3 slots: 0x00007f9f87f862db: <offset 0x00000000019252db> in /scratch/opt/mach5/mesos/work_dir/jib-master/install/jdk/12/24/linux-x64-debug.jdk/jdk-12/fastdebug/lib/server/libjvm.so at 0x00007f9f86661000
stack at sp + 4 slots: 0x00007f9c44712b98 points into unknown readable memory: 10 38 72 88 9f 7f 00 00
stack at sp + 5 slots: 0x0000000000000003 is an unknown value
stack at sp + 6 slots: 0x00007f9f5affb7e0 is pointing into the stack for thread: 0x00007f9f8026bb70
stack at sp + 7 slots: 0x00007f9c73c03aa0 points into unknown readable memory: 38 a7 71 88 9f 7f 00 00


Comments
Fix Request (11u) This fixes ZGC bug and keeps codebases in sync (I see 11.0.6-oracle). Patch applies cleanly to 11u, passes tier1, hotspot_gc (with ZGC).
03-09-2019

verified in jdk12+29 promotion testing
12-02-2019

http://cr.openjdk.java.net/~neliasso/8215755
09-01-2019

The check in split_barrier_thru_phi needs to test the number of in edges.
09-01-2019