RFR: JDK-8322237: Heap dump contains duplicate thread records for mounted virtual threads [v2]

David Holmes dholmes at openjdk.org
Fri Dec 22 00:47:51 UTC 2023


On Fri, 22 Dec 2023 00:31:51 GMT, Alex Menkov <amenkov at openjdk.org> wrote:

>> HeapDumper dumps virtual threads in 2 places:
>> - dumping platform threads (mounted virtual threads are dumped as separate thread object);
>> - dumping heap objects when the object is `java.lang.VirtualThread`.
>> 
>> In the 2nd case mounted virtual threads should be skipped (as they are already dumped with correct stack traces/stack references)
>> Check that a virtual thread is mounted is non-trivial, method from JvmtiEnvBase was used for this.
>> 
>> Testing: tier1..3, heapdump-related tests: open/test/hotspot/jtreg/serviceability,open/test/hotspot/jtreg/runtime/ErrorHandling,open/test/hotspot/jtreg/gc/epsilon,open/test/jdk/sun/tools/jhsdb
>
> Alex Menkov has updated the pull request incrementally with one additional commit since the last revision:
> 
>   feedback: reimplemented ThreadDumpe::is_vthread_mounted()

This seems good to me know - thanks for the updates. One minor suggestion below.

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

> 1932:     // create a HPROF_GC_INSTANCE record for each object
> 1933:     DumperSupport::dump_instance(writer(), o, &_class_cache);
> 1934:     if (java_lang_VirtualThread::is_instance(o)

Suggestion. Just to be clear add a comment

// If we encounter an unmounted virtual thread it needs to be dumped explicitly.

or something to that effect. Thanks.

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

Marked as reviewed by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17134#pullrequestreview-1793820556
PR Review Comment: https://git.openjdk.org/jdk/pull/17134#discussion_r1434616383


More information about the serviceability-dev mailing list