RFR: JDK-8321565: [REDO] Heap dump does not contain virtual Thread stack references

David Holmes dholmes at openjdk.org
Mon Dec 11 06:08:15 UTC 2023


On Fri, 8 Dec 2023 22:29:12 GMT, Alex Menkov <amenkov at openjdk.org> wrote:

> Original fix for JDK-8299426 (Heap dump does not contain virtual Thread stack references, #16665) caused failures of new test (added while #16665 was under review):
> test/hotspot/jtreg/compiler/c2/TestReduceAllocationAndHeapDump.java in many tears and was reverted.
> 
> Segmented heap dump assumes "merge" stage is executed outside of safepoint (to not block the VM), but heap dump may happen during safepoint (and TestReduceAllocationAndHeapDump.java test provoke the case).
> The change contains original fix for JDK-8299426 ("[original fix](https://github.com/openjdk/jdk/commit/bdbf768eafa86e0007aca4188e0567693afe9071)") and removes asserts from HeapMerger ([allow heapdump in safepoints](https://github.com/openjdk/jdk/commit/44670ca4bf55dd2a5f1f44686758844aed68937e)).
> 
> Run tier1-3 and heapdump-related tests.

src/hotspot/share/services/heapDumper.cpp line 1984:

> 1982: // user space.
> 1983: void DumpMerger::merge_file(char* path) {
> 1984:   assert(!SafepointSynchronize::is_at_safepoint(), "merging happens outside safepoint");

This might fix the failure but why is this restriction in place to begin with? This seems like a very expensive operation to be performing by the VMThread during a safepoint!

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17040#discussion_r1421975329


More information about the hotspot-runtime-dev mailing list