RFR: 8343531: Improve print_location for invalid heap pointers

Volker Simonis simonis at openjdk.org
Mon Nov 4 09:49:01 UTC 2024


Currently `BlockLocationPrinter<CollectedHeapT>::print_location()` checks for a pointer if it points into the heap and if that's true, it either prints it as an oop if `is_valid_obj()` is true or it tries to find the the start address of an oop for that pointer by calling `CollectedHeapT::heap()->block_start()`.

However, the `block_start()` functionality is not fully implemented for all GCs (e.g. the young generation of `ParallelScavengeHeap`) and for these cases `block_start()` returns NULL. Because of this NULL return value `os::print_location()` will finally qualify the corresponding pointer as pointing "into unknown readable memory" although we already know that it actually points into an invalid heap area.

In such cases, print at least that the pointer is pointing into an unknown part of the heap instead of just saying that it points into unknown memory. 

I've manually tested the new functionality in GDB.

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

Commit messages:
 - 8343531: Improve print_location for invalid heap pointers

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

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


More information about the hotspot-gc-dev mailing list