JDK-8225509 : clean_catch_blocks must add preds first
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 13
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2019-06-10
  • Updated: 2019-08-15
  • Resolved: 2019-06-11
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 13 JDK 14
13 b25Fixed 14Fixed
Related Reports
Relates :  
Relates :  
Description
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (open/src/hotspot/share/opto/lcm.cpp:1320), pid=18633, tid=18654
#  assert(beg > 0) failed: Catch cleanup walking beyond block boundary
#
# JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-internal+0-2019-06-10-0835371.per.liden.jdk)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-internal+0-2019-06-10-0835371.per.liden.jdk, mixed mode, tiered, z gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x1154bc7]  PhaseCFG::call_catch_cleanup(Block*)+0x307
#

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

Current thread (0x00007f87a01d0930):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=18654, stack(0x00007f855bafb000,0x00007f855bbfc000)]


Current CompileTask:
C2: 323372 72088   !   4       java.lang.StringCoding::encode (152 bytes)

Stack: [0x00007f855bafb000,0x00007f855bbfc000],  sp=0x00007f855bbf6c90,  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+0x1154bc7]  PhaseCFG::call_catch_cleanup(Block*)+0x307
V  [libjvm.so+0xce2bf0]  PhaseCFG::global_code_motion()+0xe60
V  [libjvm.so+0xce47b1]  PhaseCFG::do_global_code_motion()+0x51
V  [libjvm.so+0x9c215e]  Compile::Code_Gen()+0x29e
V  [libjvm.so+0x9c66a7]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x1147
V  [libjvm.so+0x8073ad]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x10d
V  [libjvm.so+0x9d301d]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x46d
V  [libjvm.so+0x9d4028]  CompileBroker::compiler_thread_loop()+0x3b8
V  [libjvm.so+0x16ca65a]  JavaThread::thread_main_inner()+0x26a
V  [libjvm.so+0x16d2cc7]  JavaThread::run()+0x227
V  [libjvm.so+0x16cfd36]  Thread::call_run()+0xf6
V  [libjvm.so+0x13ee4ee]  thread_native_entry(Thread*)+0x10e

Register to memory mapping:

RAX=0x00007f87aa721000 points into unknown readable memory: 58 00 00 00 00 00 00 00
RBX=0x0 is NULL
RCX=0x00007f87a95f1778: <offset 0x000000000196c778> in /scratch/opt/mach5/mesos/work_dir/jib-master/install/2019-06-10-0835371.per.liden.jdk/linux-x64-debug.jdk/jdk-13/fastdebug/lib/server/libjvm.so at 0x00007f87a7c85000
RDX=0x00007f87a96adceb: <offset 0x0000000001a28ceb> in /scratch/opt/mach5/mesos/work_dir/jib-master/install/2019-06-10-0835371.per.liden.jdk/linux-x64-debug.jdk/jdk-13/fastdebug/lib/server/libjvm.so at 0x00007f87a7c85000
RSP=0x00007f855bbf6c90 is pointing into the stack for thread: 0x00007f87a01d0930
RBP=0x00007f855bbf6db0 is pointing into the stack for thread: 0x00007f87a01d0930
RSI=0x0000000000000528 is an unknown value
RDI=0x00007f87a95f1548: <offset 0x000000000196c548> in /scratch/opt/mach5/mesos/work_dir/jib-master/install/2019-06-10-0835371.per.liden.jdk/linux-x64-debug.jdk/jdk-13/fastdebug/lib/server/libjvm.so at 0x00007f87a7c85000
R8 =0x0000000000000eb8 is an unknown value
R9 =0x0000000000000001 is an unknown value
R10=0x00000000000003ae is an unknown value
R11=0x0000000000000011 is an unknown value
R12=0xfffffffffffffff8 is an unknown value
R13=0x00007f8544524250 points into unknown readable memory: 70 b0 a0 a9 87 7f 00 00
R14=0x00007f84b93ad5e8 points into unknown readable memory: 90 a9 9e a9 87 7f 00 00
R15=0x0 is NULL


Registers:
RAX=0x00007f87aa721000, RBX=0x0000000000000000, RCX=0x00007f87a95f1778, RDX=0x00007f87a96adceb
RSP=0x00007f855bbf6c90, RBP=0x00007f855bbf6db0, RSI=0x0000000000000528, RDI=0x00007f87a95f1548
R8 =0x0000000000000eb8, R9 =0x0000000000000001, R10=0x00000000000003ae, R11=0x0000000000000011
R12=0xfffffffffffffff8, R13=0x00007f8544524250, R14=0x00007f84b93ad5e8, R15=0x0000000000000000
RIP=0x00007f87a8dd9bc7, EFLAGS=0x0000000000010246, CSGSFS=0x0000000000000033, ERR=0x0000000000000006
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007f855bbf6c90)
0x00007f855bbf6c90:   00007f84b90cd888 0000000020420148
0x00007f855bbf6ca0:   00007f87a99495e8 2bad4b0bbaadbabe
0x00007f855bbf6cb0:   0000000000000000 00007f87a01d10d0
0x00007f855bbf6cc0:   0000000000000002 00007f8544430090 

Instructions: (pc=0x00007f87a8dd9bc7)
0x00007f87a8dd9ac7:   41 83 45 50 01 8b 43 28 41 3b 86 a4 00 00 00 72
0x00007f87a8dd9ad7:   88 48 8b bd 38 ff ff ff 89 c6 89 85 4c ff ff ff
0x00007f87a8dd9ae7:   e8 f4 6c 54 ff 8b 85 4c ff ff ff e9 69 ff ff ff
0x00007f87a8dd9af7:   66 0f 1f 84 00 00 00 00 00 45 85 ed 74 28 45 8d
0x00007f87a8dd9b07:   65 01 31 db 45 3b 67 40 73 0b 49 8b 57 48 44 89
0x00007f87a8dd9b17:   e0 48 8b 1c c2 0f b7 43 30 83 e0 03 66 83 f8 02
0x00007f87a8dd9b27:   0f 84 6b 0c 00 00 48 8b 8d 50 ff ff ff 83 85 68
0x00007f87a8dd9b37:   ff ff ff 01 8b 85 68 ff ff ff 39 81 88 00 00 00
0x00007f87a8dd9b47:   0f 87 23 0b 00 00 48 81 c4 f8 00 00 00 5b 41 5c
0x00007f87a8dd9b57:   41 5d 41 5e 41 5f 5d c3 90 48 8d 05 79 38 c6 00
0x00007f87a8dd9b67:   45 31 c0 48 8d 0d 3a 1f 89 00 48 8d 15 46 1f 89
0x00007f87a8dd9b77:   00 be 73 01 00 00 48 8d 3d 0c 30 73 00 48 8b 00
0x00007f87a8dd9b87:   c6 00 58 45 8b 4d 1c 31 c0 e8 bb ec 92 ff e8 96
0x00007f87a8dd9b97:   06 29 00 e9 f4 fd ff ff 90 48 8d 05 39 38 c6 00
0x00007f87a8dd9ba7:   48 8d 0d ca 7b 81 00 45 31 ff 48 8d 15 33 41 8d
0x00007f87a8dd9bb7:   00 be 28 05 00 00 48 8d 3d 84 79 81 00 48 8b 00
0x00007f87a8dd9bc7:   c6 00 58 31 c0 e8 7f ec 92 ff e8 5a 06 29 00 41
0x00007f87a8dd9bd7:   8b 46 40 e9 4a fd ff ff 90 31 c9 48 89 da 4c 89
0x00007f87a8dd9be7:   ee 4c 89 f7 e8 d0 63 b8 ff e9 86 fe ff ff 0f 1f
0x00007f87a8dd9bf7:   00 83 85 40 ff ff ff 01 41 8b 87 88 00 00 00 8b
0x00007f87a8dd9c07:   8d 40 ff ff ff 39 c8 0f 87 fc fd ff ff 8b 8d 10
0x00007f87a8dd9c17:   ff ff ff 39 8d 48 ff ff ff 0f 83 18 0a 00 00 c7
0x00007f87a8dd9c27:   85 4c ff ff ff 01 00 00 00 8b 85 48 ff ff ff 48
0x00007f87a8dd9c37:   89 c1 48 c1 e0 03 48 89 85 e0 fe ff ff 48 89 85
0x00007f87a8dd9c47:   f8 fe ff ff 48 8d 45 a0 48 89 85 f0 fe ff ff 48
0x00007f87a8dd9c57:   8d 85 70 ff ff ff 89 8d 14 ff ff ff 48 89 85 e8
0x00007f87a8dd9c67:   fe ff ff 66 0f 1f 44 00 00 48 8b 85 50 ff ff ff
0x00007f87a8dd9c77:   48 c7 85 68 ff ff ff 00 00 00 00 39 48 40 76 16
0x00007f87a8dd9c87:   48 8b 40 48 48 8b b5 f8 fe ff ff 48 8b 04 30 48
0x00007f87a8dd9c97:   89 85 68 ff ff ff 66 48 8d 3d c3 e0 c5 00 66 66
0x00007f87a8dd9ca7:   48 e8 c3 62 1a ff 48 8b 18 48 85 db 0f 84 40 09
0x00007f87a8dd9cb7:   00 00 31 f6 bf 70 00 00 00 48 8b 9b b0 02 00 00 


Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007f84b90cd888 points into unknown readable memory: ab ab ab ab ab ab ab ab
stack at sp + 1 slots: 0x0000000020420148 is an unknown value
stack at sp + 2 slots: 0x00007f87a99495e8: <offset 0x0000000001cc45e8> in /scratch/opt/mach5/mesos/work_dir/jib-master/install/2019-06-10-0835371.per.liden.jdk/linux-x64-debug.jdk/jdk-13/fastdebug/lib/server/libjvm.so at 0x00007f87a7c85000
stack at sp + 3 slots: 0x2bad4b0bbaadbabe is an unknown value
stack at sp + 4 slots: 0x0 is NULL
stack at sp + 5 slots: 0x00007f87a01d10d0 points into unknown readable memory: 10 ab 9f a9 87 7f 00 00
stack at sp + 6 slots: 0x0000000000000002 is an unknown value
stack at sp + 7 slots: 0x00007f8544430090 points into unknown readable memory: 00 00 00 00 00 00 00 00
Comments
I didn't see this comments before pushing. Good news is that the assert is simply wrong, and should be removed.
11-06-2019

Opened new bug (JDK-8225564) to track the other assert above.
11-06-2019

http://cr.openjdk.java.net/~neliasso/8225509/webrev.01/
10-06-2019

This was the old call_catch_cleanup that failed, because the new catch_clean_up missed one load. The iteration of the nodes is broken by the cleanup, so one load immediately above another load was missed.
10-06-2019

This failure occurred in tier3. Build had JDK-8224675 "Late GC barrier insertion for ZGC" as the top changeset (plus two unrelated patches).
10-06-2019