RFR: 8339488: Extended NPE message doesn't handle CONSTANT_Dynamic

Oli Gillespie ogillespie at openjdk.org
Fri Sep 6 11:29:23 UTC 2024


Extended NPE messages require walking the bytecode in the method where it was created, and simulating the effect on the stack. `ldc` for dynamic constants is not handled, which can lead to assertion failures in debug builds, or incorrect NPE messages in release builds (possibly worse with the right conditions?).

Simply handle dynamic constants by figuring out their return type so we know how they will affect the stack.

The new test fails without the fix in both release and debug builds. In release, it fails because the NPE message is wrong: `Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Object.notify()" because "`, and in debug builds it hits this assert:


#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (<redacted>/src/hotspot/share/interpreter/bytecodeUtils.cpp:660), pid=12677, tid=12678
# assert(false) failed: Unexpected tag

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

Commit messages:
 - Fix 8339488

Changes: https://git.openjdk.org/jdk/pull/20889/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20889&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8339488
  Stats: 101 lines in 3 files changed: 100 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/20889.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20889/head:pull/20889

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


More information about the hotspot-runtime-dev mailing list