[lworld] RFR: 8375086: [lworld] Implicit exception handling in inline-cache check is broken

Tobias Hartmann thartmann at openjdk.org
Mon Feb 2 14:04:38 UTC 2026


We crash with a `SIGSEGV` instead of throwing a `NullPointerException` when passing a `null` receiver through an inline cache'd interface call site because the implicit null check that happens when doing the receiver type check in the unverified entry point of the nmethod is not working properly.

When `SharedRuntime::continuation_for_implicit_exception` checks where the `IMPLICIT_NULL` exception came from, it does not recognize the entry point:
https://github.com/openjdk/valhalla/blob/55c80fedfcee5d3b113cdf38d64c1bcac8632c9a/src/hotspot/share/runtime/sharedRuntime.cpp#L1021-L1028

However, with the scalarized calling convention, we have two unverified entry points (`verified_entry_point` and `verified_inline_entry_point`). Both need to be handled in `nmethod::inlinecache_check_contains`.

Thanks,
Tobias

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

Commit messages:
 - JDK-8375086

Changes: https://git.openjdk.org/valhalla/pull/2011/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2011&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8375086
  Stats: 105 lines in 3 files changed: 102 ins; 2 del; 1 mod
  Patch: https://git.openjdk.org/valhalla/pull/2011.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2011/head:pull/2011

PR: https://git.openjdk.org/valhalla/pull/2011


More information about the valhalla-dev mailing list