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