RFR: JDK-8292769: [JVMCI] OutOfMemoryError thrown when attaching the libgraal isolate causes HotSpot to crash.

Tom Rodriguez never at openjdk.org
Thu Aug 25 18:54:54 UTC 2022


On Tue, 23 Aug 2022 12:03:02 GMT, Tomáš Zezula <duke at openjdk.org> wrote:

> Fixes a virtual machine crash when the libgraal isolate does not have enough heap memory available and its memory is exhausted. The [crash](https://bugs.openjdk.org/secure/attachment/100520/hs_err_pid679001.log) is caused by an unhandled `OutOfMemoryError` thrown in the isolate's `AttachCurrentThread`.
> The isolate's `AttachCurrentThread` is [fixed](https://github.com/oracle/graal/commit/62ede96fd3ddc9e5ddb4804ed369f61cfa0c0a21#diff-9eedff7eb9fceec5f37c48cf089ff8e24103279e1384a2c0fa1fc9446b5dc438)  to report an `OutOfMemoryError` using a `JNI_ENOMEM` result. This pull request aborts a compilation when `AttachCurrentThread` fails with `JNI_ENOMEM`.

src/hotspot/share/jvmci/jvmciEnv.cpp line 239:

> 237: JVMCIEnv::JVMCIEnv(JavaThread* thread, JVMCICompileState* compile_state, const char* file, int line):
> 238:     _throw_to_caller(false), _file(file), _line(line), _attach_threw_OOME(false), _compile_state(compile_state) {
> 239:   init_env_mode_runtime(thread, NULL, false);

why is it only non-fatal for this single path?  Some comments explaining the reason for it being fatal in some paths and not in others would help.

src/hotspot/share/jvmci/jvmciEnv.cpp line 241:

> 239:   init_env_mode_runtime(thread, NULL, false);
> 240:   if (_attach_threw_OOME) {
> 241:     compile_state->set_failure(true, "Out of memory");

Could this be more explicit like `JVMCI compiler attach returned out of memory`?  cc @dougxc

-------------

PR: https://git.openjdk.org/jdk/pull/9978


More information about the hotspot-compiler-dev mailing list