RFR: 8304824: NMT should not use ThreadCritical [v8]
Robert Toyonaga
duke at openjdk.org
Mon Oct 28 15:52:54 UTC 2024
On Mon, 28 Oct 2024 15:45:31 GMT, Robert Toyonaga <duke at openjdk.org> wrote:
>> src/hotspot/share/runtime/mutexLocker.cpp line 299:
>>
>>> 297: MUTEX_DEFN(ThreadsSMRDelete_lock , PaddedMonitor, service-2); // Holds ConcurrentHashTableResize_lock
>>> 298: MUTEX_DEFN(ThreadIdTableCreate_lock , PaddedMutex , safepoint);
>>> 299: MUTEX_DEFN(SharedDecoder_lock , PaddedMutex , service-5);
>>
>> Why this? Do we print stacks under NMT lock protection?
>
> Yes I think so. `MemTracker::print_containing_region` first acquires the NMT lock then the `SharedDecoder_lock` like this:
>
> `MemTracker::print_containing_region` -->
> `PrintRegionWalker::do_allocation_site` -->
> `NativeCallStack::print_frame` -->
> `Decoder::get_source_info` -->
> `Decoder::shared_decoder_lock()`
Otherwise `make test TEST=hotspot_nmt` throws a lock rank error when running the test `location_printing_mmap_1`. That test uses `MemTracker::print_containing_region`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20852#discussion_r1819316109
More information about the serviceability-dev
mailing list