[9] RFR (XS): 8139247: Improper locking of	MethodData::_extra_data_lock
    David Holmes 
    david.holmes at oracle.com
       
    Thu Mar  3 21:57:39 UTC 2016
    
    
  
On 3/03/2016 8:40 PM, Vladimir Ivanov wrote:
> 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
Just to be clear this is not a compiler bug - the anonymous instance can 
be destructed at any time after construction as it lives only until the 
end of the expression that defines it. Arguably any compiler not doing 
this is the buggy one. :)
Cheers,
David
> 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