-
Bug
-
Resolution: Fixed
-
P4
-
17, 21, 22
-
b13
VM shutdown involves calling Java code which can schedule further compilations by the CompileBroker. With UseJVMCICompiler, all compilations started once VM shutdown has begun are abandoned since they are unnecessary and can even delay VM shutdown from completing.
The implementation of -XX:+AbortVMOnCompilationFailure should ignore such abandoned compilations to prevent crashes such as:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (compileBroker.cpp:2096), pid=303361, tid=303384
# fatal error: Never compilable: in JVMCI shutdown
#
# JRE version: Java(TM) SE Runtime Environment (21.0) (build 21-internal-LTS-2023-07-18-1316304.gergo...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21-internal-LTS-2023-07-18-1316304.gergo..., mixed mode, sharing, tiered, jvmci, jvmci compiler, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x6452d9] CompileBroker::handle_compile_error(CompilerThread*, CompileTask*, ciEnv*, int, char const*) [clone .part.0]+0x29
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/gergo/galahad-ee/galahad-ee/build/linux-x64/test-support/jtreg_open_test_hotspot_jtreg_compiler_intrinsics_TestRotate_java/scratch/core.303361)
#
The implementation of -XX:+AbortVMOnCompilationFailure should ignore such abandoned compilations to prevent crashes such as:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (compileBroker.cpp:2096), pid=303361, tid=303384
# fatal error: Never compilable: in JVMCI shutdown
#
# JRE version: Java(TM) SE Runtime Environment (21.0) (build 21-internal-LTS-2023-07-18-1316304.gergo...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21-internal-LTS-2023-07-18-1316304.gergo..., mixed mode, sharing, tiered, jvmci, jvmci compiler, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x6452d9] CompileBroker::handle_compile_error(CompilerThread*, CompileTask*, ciEnv*, int, char const*) [clone .part.0]+0x29
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/gergo/galahad-ee/galahad-ee/build/linux-x64/test-support/jtreg_open_test_hotspot_jtreg_compiler_intrinsics_TestRotate_java/scratch/core.303361)
#