RFR: 8339488: Extended NPE message doesn't handle CONSTANT_Dynamic [v3]

ExE Boss duke at openjdk.org
Wed Sep 11 06:51:12 UTC 2024


On Mon, 9 Sep 2024 08:40:54 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
>
> Oli Gillespie has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Feedback - don't use flagless or limited process builder

test/hotspot/jtreg/runtime/condy/CondyExtendedNullPointerTest.java line 40:

> 38:     public static void main(String args[]) throws Throwable {
> 39:         ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder("-Xverify:all",
> 40:                                                                              "CondyExtendedNullPointer");

**Nit:** unbalanced whitespace:
Suggestion:

        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder("-Xverify:all",
                                                                      "CondyExtendedNullPointer");

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20889#discussion_r1753261470


More information about the hotspot-runtime-dev mailing list