RFR: 8335553: [Graal] Compiler thread calls into jdk.internal.vm.VMSupport.decodeAndThrowThrowable and crashes in OOM situation
Doug Simon
dnsimon at openjdk.org
Tue Jul 9 07:52:58 UTC 2024
This PR addresses intermittent failures in jtreg GC stress tests. The failures occur under these conditions:
1. Using a libgraal build with assertions enabled as the top tier JIT compiler. Such a libgraal build will cause a VM exit if an assertion or GraalError occurs in a compiler thread (as this catches more errors in testing).
2. A libgraal compiler thread makes a call into the VM (via `CompilerToVM`) to a routine that performs a HotSpot heap allocation that fails.
3. The resulting OOME is wrapped in a GraalError, causing the VM to exit as described in 1.
An OOME thrown in these specific conditions should not exit the VM as it not related to an OOME in the app or test. Instead, the failure should be treated as a bailout and the libgraal compiler should continue.
To accomplish this, libgraal needs to be able to distinguish a GraalError caused by an OOME. This PR modifies the exception translation code to make this possible.
-------------
Commit messages:
- improved exception translation between HotSpot and libgraal heaps
Changes: https://git.openjdk.org/jdk/pull/20083/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20083&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8335553
Stats: 84 lines in 5 files changed: 50 ins; 22 del; 12 mod
Patch: https://git.openjdk.org/jdk/pull/20083.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/20083/head:pull/20083
PR: https://git.openjdk.org/jdk/pull/20083
More information about the core-libs-dev
mailing list