[9] RFR (XS): 8139247: Improper locking of MethodData::_extra_data_lock
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Thu Mar 3 10:40:51 UTC 2016
http://cr.openjdk.java.net/~vlivanov/8139247/webrev.00
https://bugs.openjdk.java.net/browse/JDK-8139247
Solaris Studio C++ compiler generates tightly coupled
Monitor::lock/unlock calls for unnamed MutexLocker which breaks
synchronization between ciMethodData::load_extra_data() and
MethodData::bci_to_extra_data().
MutexLocker(mdo->extra_data_lock());
is compiled into:
load_extra_data+0x001d: movq %r13,%rdi
load_extra_data+0x0020: call lock [ 0xfffffd7fe6df46c0, .+0x7cc5c0 ]
load_extra_data+0x0025: movq %r13,%rdi
load_extra_data+0x0028: call unlock [ 0xfffffd7fe6df47f0, .+0x7cc6e8
But after adding a name, we hit a compiler bug in SS12u4 and
Monitor::unlock call is missed. So, have to add a workaround (same as in
JDK-8146616 [1]).
Testing: verified machine code for ciMethodData::load_extra_data().
Best regards,
Vladimir Ivanov
[1] https://bugs.openjdk.java.net/browse/JDK-8146616
More information about the hotspot-dev
mailing list