RFR(S) 8187040: ThreadCritical crashes on Solaris if used between os::init and os::init_2
Mikael Gerdin
mikael.gerdin at oracle.com
Fri Sep 1 15:23:54 UTC 2017
Hi,
Please review this small fix to ThreadCritical.
When working on a piece of code which allocates memory early on I
noticed that it crashed if I enabled NMT.
The reason is that NMT uses ThreadCritical and os::Solaris sets the
ThreadCritical::_initialized flag before it actually sets up the
function pointers the flag is supposed to guard.
os::Solaris::_mutex_lock is not initialized until the init_2 phase
(after command line flag parsing).
My suggested fix is to replace the current short-circuit of
ThreadCritical with a flag set when the Solaris mutex code is
initialized and thereby getting rid of the initialize function on all
platforms.
Additionally, ThreadCritical::release is unreachable code and from my
research has never actually been called, we might as well get rid of it.
Webrev: http://cr.openjdk.java.net/~mgerdin/8187040/webrev.0/
Bug: https://bugs.openjdk.java.net/browse/JDK-8187040
Testing: JPRT
Thanks
/Mikael
More information about the hotspot-runtime-dev
mailing list