RFR(S): 8148696: Race loading hsdis may cause SIGSEGV

Nils Eliasson nils.eliasson at oracle.com
Mon Feb 8 13:24:22 UTC 2016


The link to JDK-8071374 was informative, Thanks!

Here is a webrev with just a ttyLocker on the missing path 
(Disassembler::can_decode)

Webrev: http://cr.openjdk.java.net/~neliasso/8148696/webrev.02/

Best regards,
Nils Eliasson

On 2016-02-06 08:50, Nils Eliasson wrote:
> Hi Vladimir,
>
> On 2016-02-05 17:54, Vladimir Ivanov wrote:
>>> Summary:
>>> We have had two crashes on Sparc where two C2 thread simultaneously
>>> tries to load the hsdis library. Three of four code paths are locked by
>>> the ttyLocker, but the fourth is open to races.
>> I'd suggest to either add ttyLocker on the fourth path or try to move 
>> it down the call chain to some shared code. (Keep in mind that 
>> ttyLocker is reentrant!)
>
> Yes maybe I should just do that. The time in library check and load is 
> probably insignificant compared to the time spent disassembling and 
> printing.
>
>>
>>> Solution:
>>> I chose to add another lock (mutex) for this purpose and adapted the
>>> code so that library_load code works as intented.
>> Another mutex will not work - tty_lock has the lowest rank (event):
>>   def(tty_lock                     , Mutex  , event,       true, 
>> Monitor::_safepoint_check_never);      // allow to lock in VM
>
> In my suggested code the ttylocker is not held while loading the 
> library. The critical section is slightly smaller than before.
>
>>
>> I experimented with that when fixing 8071374, but decided to guard 
>> everything with tty_lock.
>>
>> Best regards,
>> Vladimir Ivanov
>
> I'll have a look at the bug and post a new webrev.
>
> Thanks!
> Nils Eliasson
>
>>
>> [1] 
>> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-December/020417.html
>>
>> "The fix is to serialize access to Disassembler on tty_lock.
>> Considering most of the calls to Disassembler::decode are performed 
>> under tty_lock (which has the lowest rank), it's too burdensome to 
>> introduce a dedicated lock and a new rank to please deadlock 
>> detection logic."
>>
>>
>>
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8148696
>>> Webrev: http://cr.openjdk.java.net/~neliasso/8148696/webrev.01/
>>>
>>> Regards,
>>> Nils Eliasson
>



More information about the hotspot-compiler-dev mailing list