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

Oli Gillespie ogillespie at openjdk.org
Mon Sep 9 14:57:12 UTC 2024


On Fri, 6 Sep 2024 11:22:50 GMT, Oli Gillespie <ogillespie at openjdk.org> wrote:

> 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

This pull request has now been integrated.

Changeset: 7c0f013d
Author:    Oli Gillespie <ogillespie at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/7c0f013d924a66c9cf55de761702b8de855e87fa
Stats:     99 lines in 3 files changed: 98 ins; 0 del; 1 mod

8339488: Extended NPE message doesn't handle CONSTANT_Dynamic

Reviewed-by: lmesnik, coleenp, simonis, liach

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

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


More information about the hotspot-runtime-dev mailing list