JDK-8350471 : Unhandled compilation bailout in GraphKit::builtin_throw
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 24,25
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2025-02-21
  • Updated: 2025-03-28
  • Resolved: 2025-03-28
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 25
25 masterFixed
Related Reports
Relates :  
Description
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f263f999fff, pid=1981012, tid=1981031
#
# JRE version: Java(TM) SE Runtime Environment (25.0+12) (fastdebug build 25-ea+12-LTS-1220)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-ea+12-LTS-1220, mixed mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xa4bfff]  Compile::start() const+0x7f
#
# Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to /opt/mach5/mesos/work_dir/slaves/03ecc23a-edd5-4bb5-a333-4ff8ea07fd7c-S1744/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/ea289a4a-d36d-4750-a338-45eaff6e0469/runs/341ac902-a801-4920-80cd-95149e37702c/testoutput/test-support/jtreg_open_test_hotspot_jtreg_ctw_2/scratch/2/core.1981012)
#
# 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:MaxRAMPercentage=4.16667 -Dtest.boot.jdk=/opt/mach5/mesos/work_dir/jib-master/install/jdk/23/37/bundles/linux-x64/jdk-23_linux-x64_bin.tar.gz/jdk-23 -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/03ecc23a-edd5-4bb5-a333-4ff8ea07fd7c-S1744/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/ea289a4a-d36d-4750-a338-45eaff6e0469/runs/341ac902-a801-4920-80cd-95149e37702c/testoutput/test-support/jtreg_open_test_hotspot_jtreg_ctw_2/tmp -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -XX:-TieredCompilation -Djava.awt.headless=true -Xbatch -XX:-ShowMessageBoxOnError -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+DisplayVMOutputToStderr -DCompileTheWorldStartAt=0 -DCompileTheWorldStopAt=3661 -XX:+WhiteBoxAPI -Xbootclasspath/a:. --add-exports=java.base/jdk.internal.jimage=ALL-UNNAMED --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED --add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED --add-exports=java.base/jdk.internal.access=ALL-UNNAMED -XX:+LogCompilation -XX:LogFile=hotspot_modules_java_base_0_%p.log -XX:ErrorFile=hs_err_modules_java_base_0_%p.log -XX:ReplayDataFile=replay_modules_java_base_0_%p.log -XX:CompileCommand=exclude,java/lang/invoke/MethodHandle.* -XX:PerMethodTrapLimit=0 -XX:PerMethodSpecTrapLimit=0 -XX:-StackTraceInThrowable -XX:+IgnoreUnrecognizedVMOptions -XX:-ZapUnusedHeapArea -XX:+StressLCM -XX:+StressGCM -XX:+StressIGVN -XX:+StressCCP -XX:+StressMacroExpansion -XX:+StressIncrementalInlining -XX:StressSeed=190668696 -XX:CompileCommand=memlimit,*.*,0 -XX:+StressBailout -XX:StressBailoutMean=100000 -XX:+CaptureBailoutInformation sun.hotspot.tools.ctw.CompileTheWorld modules:java.base

Host: AMD EPYC 7J13 64-Core Processor, 12 cores, 23G, Oracle Linux Server release 8.10
Time: Fri Feb 21 02:34:51 2025 UTC elapsed time: 138.485414 seconds (0d 0h 2m 18s)

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

Current thread (0x00007f2638217ad0):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=1981031, stack(0x00007f261d97a000,0x00007f261da7a000) (1024K)]


Current CompileTask:
C2:138485 24732    b        jdk.internal.jimage.ImageReader$SharedImageReader$$Lambda/0x00007f25cf054578::visit (13 bytes)

Stack: [0x00007f261d97a000,0x00007f261da7a000],  sp=0x00007f261da73a80,  free space=998k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xa4bfff]  Compile::start() const+0x7f  (node.hpp:1487)
V  [libjvm.so+0x144846b]  LoadNode::Ideal(PhaseGVN*, bool)+0x4ab  (memnode.cpp:1871)
V  [libjvm.so+0x15f417b]  PhaseGVN::transform(Node*)+0x6b  (phaseX.cpp:668)
V  [libjvm.so+0xe1c45e]  GraphKit::make_load(Node*, Node*, Type const*, BasicType, MemNode::MemOrd, LoadNode::ControlDependency, bool, bool, bool, bool, unsigned char)+0x10e  (graphKit.cpp:1565)
V  [libjvm.so+0x7201a9]  BarrierSetC2::load_at_resolved(C2Access&, Type const*) const+0x2a9  (barrierSetC2.cpp:219)
V  [libjvm.so+0x71f78a]  BarrierSetC2::load_at(C2Access&, Type const*) const+0xea  (barrierSetC2.cpp:369)
V  [libjvm.so+0xe2c62d]  GraphKit::access_load_at(Node*, Node*, TypePtr const*, Type const*, BasicType, unsigned long)+0xad  (graphKit.cpp:1658)
V  [libjvm.so+0x15be43b]  Parse::array_load(BasicType)+0xbb  (parse2.cpp:67)
V  [libjvm.so+0x15c9e59]  Parse::do_one_bytecode()+0x899  (parse2.cpp:2163)
V  [libjvm.so+0x15b7b03]  Parse::do_one_block()+0x233  (parse1.cpp:1586)
V  [libjvm.so+0x15b8e45]  Parse::do_all_blocks()+0x135  (parse1.cpp:724)
V  [libjvm.so+0x15bc368]  Parse::Parse(JVMState*, ciMethod*, float)+0xaa8  (parse1.cpp:628)
V  [libjvm.so+0x8b72b9]  ParseGenerator::generate(JVMState*)+0xb9  (callGenerator.cpp:97)
V  [libjvm.so+0x8bb300]  PredictedCallGenerator::generate(JVMState*)+0x370  (callGenerator.cpp:914)
V  [libjvm.so+0xc076e2]  Parse::do_call()+0x5f2  (doCall.cpp:679)
V  [libjvm.so+0x15c99b8]  Parse::do_one_bytecode()+0x3f8  (parse2.cpp:2741)
V  [libjvm.so+0x15b7b03]  Parse::do_one_block()+0x233  (parse1.cpp:1586)
V  [libjvm.so+0x15b8e45]  Parse::do_all_blocks()+0x135  (parse1.cpp:724)
V  [libjvm.so+0x15bc368]  Parse::Parse(JVMState*, ciMethod*, float)+0xaa8  (parse1.cpp:628)
V  [libjvm.so+0x8b72b9]  ParseGenerator::generate(JVMState*)+0xb9  (callGenerator.cpp:97)
V  [libjvm.so+0x8bb300]  PredictedCallGenerator::generate(JVMState*)+0x370  (callGenerator.cpp:914)
V  [libjvm.so+0xc076e2]  Parse::do_call()+0x5f2  (doCall.cpp:679)
V  [libjvm.so+0x15c99b8]  Parse::do_one_bytecode()+0x3f8  (parse2.cpp:2741)
V  [libjvm.so+0x15b7b03]  Parse::do_one_block()+0x233  (parse1.cpp:1586)
V  [libjvm.so+0x15b8e45]  Parse::do_all_blocks()+0x135  (parse1.cpp:724)
V  [libjvm.so+0x15bc368]  Parse::Parse(JVMState*, ciMethod*, float)+0xaa8  (parse1.cpp:628)
V  [libjvm.so+0x8b72b9]  ParseGenerator::generate(JVMState*)+0xb9  (callGenerator.cpp:97)
V  [libjvm.so+0x8bb300]  PredictedCallGenerator::generate(JVMState*)+0x370  (callGenerator.cpp:914)
V  [libjvm.so+0x8bd4ab]  CallGenerator::do_late_inline_helper()+0x9db  (callGenerator.cpp:675)
V  [libjvm.so+0xa63c95]  Compile::inline_incrementally_one()+0xd5  (compile.cpp:2034)
V  [libjvm.so+0xa64b7b]  Compile::inline_incrementally(PhaseIterGVN&)+0x2db  (compile.cpp:2117)
V  [libjvm.so+0xa65556]  Compile::Optimize()+0x336  (compile.cpp:2250)
V  [libjvm.so+0xa69c5f]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1b9f  (compile.cpp:848)
V  [libjvm.so+0x8b4da5]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5  (c2compiler.cpp:141)
V  [libjvm.so+0xa76528]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928  (compileBroker.cpp:2331)
V  [libjvm.so+0xa77268]  CompileBroker::compiler_thread_loop()+0x528  (compileBroker.cpp:1975)
V  [libjvm.so+0xf417de]  JavaThread::thread_main_inner()+0xee  (javaThread.cpp:776)
V  [libjvm.so+0x18962c6]  Thread::call_run()+0xb6  (thread.cpp:231)
V  [libjvm.so+0x156e458]  thread_native_entry(Thread*)+0x128  (os_linux.cpp:877)

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000020

Pending compilation failure details for thread 0x00007f2638217ad0:
  Time: 138.483687 seconds (0d 0h 2m 18s)  Compile id: 24732
  Reason: 'StressBailout'
  Callstack: 
[0x00007f263f9af57d]Compile::fail_randomly()+0x3d   (compile.cpp:4911)
[0x00007f263fd78360]GraphKit::builtin_throw(Deoptimization::DeoptReason)+0x720   (graphKit.cpp:590)
[0x00007f263fd78b67]GraphKit::null_check_common(Node*, BasicType, bool, Node**, bool) [clone .part.0]+0x797   (graphKit.cpp:1407)
[0x00007f264050bb32]Parse::array_addressing(BasicType, int, Type const*&)+0xf2   (parse2.cpp:116)
Comments
Changeset: 8ef78323 Branch: master Author: Manuel Hässig <manuel.hassig@oracle.com> Committer: Tobias Hartmann <thartmann@openjdk.org> Date: 2025-03-28 08:53:37 +0000 URL: https://git.openjdk.org/jdk/commit/8ef78323b1177782a645155fda19544fae24c279
28-03-2025

A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/24243 Date: 2025-03-26 08:55:10 +0000
26-03-2025

The bailout is here: https://github.com/openjdk/jdk/blob/e9278de3f8676c288bfdce96f8348470e7c42900/src/hotspot/share/opto/graphKit.cpp#L590 The exceptions are pre-allocated and even if their allocation would fail, I don't think 'failing()' would be true. So I think this is a false positive but needs some more investigation. ILW = Crash due to unhandled compilation bailout (probably false positive), intermittent with single test and StressBailout flag - never observed without, no workaround but disable compilation of affected method = MLH = P4
24-02-2025

We can verify if this is a case of unhandled bailout or a false positive. Pending compilation failure details for thread [...]: Time: 138.483687 seconds (0d 0h 2m 18s) Compile id: 24732 Reason: 'StressBailout' Callstack: Compile::fail_randomly()+0x3d (compile.cpp:4911) GraphKit::builtin_throw(Deoptimization::DeoptReason)+0x720 (graphKit.cpp:590) GraphKit::null_check_common(Node*, BasicType, bool, Node**, bool) [clone .part.0]+0x797 (graphKit.cpp:1407) Parse::array_addressing(BasicType, int, Type const*&)+0xf2 (parse2.cpp:116) === Very brief look: so the intersection between the crash stack trace and bailout one seems to be 'void Parse::array_load'
21-02-2025