RFR: JDK-8264899: C1: -XX:AbortVMOnException does not work if all methods in the call stack are compiled with C1 and there are no exception handlers [v3]

Damon Fenacci duke at openjdk.org
Wed Jun 14 11:05:45 UTC 2023


> # Problem
> The `AbortVMOnException` flag prints the stack trace instead of aborting when the code gets compiled with C1.
> This only happens when the exception gets unwound, all methods in the call stack are compiled with C1 and there are no exception handlers for that exception.
> This happens here (for x86. Other platform's implementations are similar):
> 
> https://github.com/openjdk/jdk/blob/4d4706967d44b6908406818bb135f94130f373a0/src/hotspot/cpu/x86/c1_Runtime1_x86.cpp#L1209-L1215
> 
> # Solution
> To catch this situation, if `AbortVMOnException` is set, a call to check if there is a match is added when unwinding the exception. This is done in the `void Runtime1::generate_unwind_exception` which is the sole call of the `unwind_exception_id` case.
> 
> A regression test is added as well.
> 
> # Testing
> This fix includes changes for x86_32/64 and aarch64, which I could test thoroughly but also for **arm**, **ppc**, **riscv**, and **s390** for which I would **need some help with testing**.

Damon Fenacci has updated the pull request incrementally with one additional commit since the last revision:

  JDK-8264899: remove stub reordering

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/14240/files
  - new: https://git.openjdk.org/jdk/pull/14240/files/75d662b5..d899bb83

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=14240&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14240&range=01-02

  Stats: 2 lines in 1 file changed: 1 ins; 1 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/14240.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14240/head:pull/14240

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


More information about the hotspot-dev mailing list