RFR: 8274794: Print all owned locks in hs_err file
David Holmes
dholmes at openjdk.java.net
Fri Oct 15 06:12:51 UTC 2021
On Fri, 15 Oct 2021 05:46:10 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
>> See CR for details. This saves the created mutex in a mutex_array during Mutex construction so that all Mutex, not just the ones in mutexLocker.cpp can be printed in the hs_err file. ThreadCritical is used to protect the mutex_array, and to avoid UB should be used when printing the owned locks, but since that is done during error handling, this seemed better not to lock during error handling. There's 0 probability that another thread will be creating a lock during this error handling anyway.
>> Tested with tier1-8.
>
> src/hotspot/share/runtime/mutex.cpp line 284:
>
>> 282: static void remove_mutex(Mutex* var) {
>> 283: ThreadCritical tc;
>> 284: int i = _mutex_array->find_from_end(var);
>
> Ouch. You count on Mutexes either living forever or being very short-lived here?
I think the view is that the static mutexes will populate from the start of the array so any dynamic mutex, which is the only candidate for removal, must be closer to the end.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5958
More information about the hotspot-dev
mailing list