JDK-8239069 : C2: SIGSEGV in IdealGraphPrinter::walk_nodes due to C->root() being NULL
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,12,13,14,15
  • Priority: P5
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2020-02-14
  • Updated: 2020-09-18
  • Resolved: 2020-02-17
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 15
15 b11Fixed
Related Reports
Relates :  
Description
This only happens in rare cases when trying to print the ideal graph with -XX:+PrintIdealGraph and a non-zero graph level like -XX:PrintIdealGraphLevel=1.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f5f91c9fa5d, pid=11985, tid=11992
#
# JRE version: Java(TM) SE Runtime Environment (15.0) (slowdebug build 15-internal+0-2019-11-08-0757471.christian...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 15-internal+0-2019-11-08-0757471.christian..., mixed mode, tiered, compressed oops, serial gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x97ba5d]  IdealGraphPrinter::walk_nodes(Node*, bool, VectorSet*)+0x9f
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P" (or dumping to /home/christian/jdk/open/test/hotspot/jtreg/testlibrary/ctw/dist/core.11985)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

---------------  S U M M A R Y ------------

Command Line: -XX:+ReplayCompiles -Xbatch -XX:ReplayDataFile=/home/christian/jdk/open/test/hotspot/jtreg/testlibrary/ctw/dist/replay_pid10332.log -XX:+ReplayIgnoreInitErrors -XX:CompileCommand=quiet -XX:CompileCommand=print,io.cloudslang.content.jclouds.actions.instances.DescribeInstancesAction::execute -XX:+PrintCompilation -XX:+PrintIdealGraph -XX:PrintIdealGraphLevel=1 -XX:PrintIdealGraphFile=graph.xml 

Host: work, Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz, 1 cores, 15G, Ubuntu 18.04.4 LTS
Time: Fri Feb 14 09:41:38 2020 CET elapsed time: 3 seconds (0d 0h 0m 3s)

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

Current thread (0x00007f5f8c22c000):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=11992, stack(0x00007f5f79a73000,0x00007f5f79b74000)]


Current CompileTask:
C2:   3084   28    b  4       com.ning.http.client.AsyncHttpClientConfig::<init> (68 bytes)

Stack: [0x00007f5f79a73000,0x00007f5f79b74000],  sp=0x00007f5f79b6e680,  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+0x97ba5d]  IdealGraphPrinter::walk_nodes(Node*, bool, VectorSet*)+0x9f
V  [libjvm.so+0x97be95]  IdealGraphPrinter::print(char const*, Node*)+0xe9
V  [libjvm.so+0x97bda9]  IdealGraphPrinter::print_method(char const*, int)+0x51
V  [libjvm.so+0x6da1ac]  Compile::print_method(CompilerPhaseType, int, int)+0x198
V  [libjvm.so+0x6d5048]  Compile::record_failure(char const*)+0xae
V  [libjvm.so+0x4e1ed5]  Compile::record_method_not_compilable(char const*)+0x51
V  [libjvm.so+0xd9ae46]  Matcher::warp_outgoing_stk_arg(VMRegImpl*, int, int&)+0x92
V  [libjvm.so+0xd9bb52]  Matcher::match_sfpt(SafePointNode*)+0xcf0
V  [libjvm.so+0xd9a5d2]  Matcher::xform(Node*, int)+0x1d8
V  [libjvm.so+0xd9671e]  Matcher::match()+0xdc4
V  [libjvm.so+0x6cfdff]  Compile::Code_Gen()+0x95
V  [libjvm.so+0x6c89d0]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x13fa
V  [libjvm.so+0x5cbf3a]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x152
V  [libjvm.so+0x6e4cc8]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x7f0
V  [libjvm.so+0x6e3937]  CompileBroker::compiler_thread_loop()+0x3dd
V  [libjvm.so+0x106dccf]  compiler_thread_entry(JavaThread*, Thread*)+0x69
V  [libjvm.so+0x1068ea1]  JavaThread::thread_main_inner()+0x149
V  [libjvm.so+0x1068d4f]  JavaThread::run()+0x11f
V  [libjvm.so+0x1064ec1]  Thread::call_run()+0x195
V  [libjvm.so+0xe7f4c0]  thread_native_entry(Thread*)+0x1e4



Can be reproduced with the attached replay file:
wget https://repo1.maven.org/maven2/com/elastisys/scale/commons.logreplayer/2.3.4/commons.logreplayer-2.3.4.jar
java -XX:+ReplayCompiles -XX:ReplayDataFile=replay_pid10332.log -XX:+ReplayIgnoreInitErrors -XX:+PrintIdealGraph -XX:PrintIdealGraphLevel=1 -cp commons.logreplayer-2.3.4.jar 

Comments
URL: https://hg.openjdk.java.net/jdk/jdk/rev/6308389bdc83 User: chagedorn Date: 2020-02-17 13:19:28 +0000
17-02-2020

ILW = Crash when printing ideal graph (only affects debug build), rare with -XX:+PrintIdealGraph and -XX:PrintIdealGraphLevel=1, no workaround = LLH = P5
14-02-2020