On Tue, 16 Dec 2025 03:57:29 GMT, David Holmes <[email protected]> wrote:

>> The JvmtiTagMap::flush_object_free_events() method might be called from 
>> different threads.
>> The thread waits using lock until other thread posting events. The locking 
>> thread is in vm state doesn't allowing safepoints. While other thread 
>> posting events might request safepoints.
>> 
>> The fix is to block thread to allow safepoints while waiting on the lock.
>
> src/hotspot/share/prims/jvmtiTagMap.cpp line 1210:
> 
>> 1208:       // This another thread might have safepoints during event 
>> callbacks.
>> 1209:       ThreadBlockInVM tbivm(JavaThread::current());
>> 1210:       MonitorLocker ml(lock(), Mutex::_no_safepoint_check_flag);
> 
> Why not just remove the "no safepoint check" from the MonitorLocker?

This is lock is used in different places, including 
`JvmtiTagMap::check_hashmaps_for_heapwalk`
which is called from VMThread. 
Thus JvmtiTagMap_lock can't has rank `safepoint` and this `MonitorLocker` 
should also has `_no_safepoint_check_flag`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28839#discussion_r2624844825

Reply via email to