On Mon, 26 Oct 2026 16:32:30 GMT, Chris Plummer <[email protected]> wrote:

>> This change prevents NullPointerException in the clhsdb dumpcodecache 
>> command.
>> 
>> `CodeCache.createCodeBlobWrapper()` causes NullPointerException.
>> `CodeHeap.findStart()` may return null and `CodeHeap.iterate()` passes it to 
>> `CodeCache.createCodeBlobWrapper()` as the `cbStart` argument.
>> 
>> https://github.com/openjdk/jdk/blob/bbd629b0ef4d0ac7fbc2b33bb76170fd15060cd3/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/CodeHeap.java#L111
>> 
>> So this change makes `createCodeBlobWrapper()` return null when `cbStart` is 
>> null.
>> 
>> ### Testing
>> * jtreg:hotspot/jtreg/serviceability/sa/
>> 
>> $ make test TEST="jtreg:hotspot/jtreg/serviceability/sa/"
>> ==============================
>>    TEST                                              TOTAL  PASS  FAIL ERROR 
>>  SKIP
>>    jtreg:test/hotspot/jtreg/serviceability/sa           81    76     0     0 
>>     5
>> ==============================
>> 
>> * Manual verification: dumpcodecache does not output NullPointerException.
>> 
>> $ jhsdb clhsdb --pid 654607
>> Attaching to process 654607, please wait...
>> hsdb> dumpcodecache
>> <snip>
>> hsdb>
>> 
>> Note: `hotspot/jtreg/serviceability/sa/TestDebugInfoDecode.java` passed, but 
>> printed NullPointerException before this change. There is no 
>> NullPointerException in the test output after the change.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
>> Note: hotspot/jtreg/serviceability/sa/TestDebugInfoDecode.java passed, but 
>> printed NullPointerException before this change. There is no 
>> NullPointerException in the test output after the change.
> 
> Did it fail as a result? It looks like it should have.

@plummercj
> Did it fail as a result? It looks like it should have.

No, it passed. `CodeHeap.iterate()` catches RuntimeException and just prints it 
via `e.printStackTrace()`. TestDebugInfoDecode checks the exit code, but 
doesn't check the content of the output.

https://github.com/openjdk/jdk/blob/bbd629b0ef4d0ac7fbc2b33bb76170fd15060cd3/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/CodeHeap.java#L109-L121

https://github.com/openjdk/jdk/blob/bbd629b0ef4d0ac7fbc2b33bb76170fd15060cd3/test/hotspot/jtreg/serviceability/sa/TestDebugInfoDecode.java#L103-L104

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

PR Comment: https://git.openjdk.org/jdk/pull/33568#issuecomment-6432284207

Reply via email to