RFR(S): 8058461: serviceability/dcmd/CodelistTest.java and serviceability/dcmd/CompilerQueueTest.java SIGSEGV
Nils Eliasson
nils.eliasson at oracle.com
Thu Sep 18 11:52:17 UTC 2014
Albert pointed out that there are actually only one compile queue lock
share by the queues. That simplified the patch.
Next: http://cr.openjdk.java.net/~neliasso/8058461/webrev.12
Thanks,
//Nils
On 2014-09-18 12:41, Nils Eliasson wrote:
> Yes, good catch.
>
> Next: http://cr.openjdk.java.net/~neliasso/8058461/webrev.09/
>
> //Nils
>
> On 2014-09-18 12:21, Albert wrote:
>> Hi Nils,
>>
>> 785 void CompileBroker::print_compile_queues(outputStream* st) {
>> 786 _c1_compile_queue->print_with_lock(st);
>> 787 _c2_compile_queue->print_with_lock(st);
>> 788 }
>>
>>
>> can't it happen that _c1_compile_queue and/or _c2_compile_queue or NULL?
>>
>> Best,
>> Albert
>>
>>
>> On 09/18/2014 10:50 AM, Nils Eliasson wrote:
>>> Yes. Also good to have the print method lock-free so it can be
>>> callled from a debugger without hassle. Adding a wrapper that takes
>>> the compileQueue lock.
>>>
>>> New webrev: http://cr.openjdk.java.net/~neliasso/8058461/webrev.08/
>>>
>>> Thanks!
>>> //Nils
>>>
>>> On 2014-09-18 02:59, Vladimir Kozlov wrote:
>>>> CompileQueue::add() path already has lock acquired.
>>>> I think you need the lock only in
>>>> CompileBroker::print_compile_queues().
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 9/17/14 1:54 AM, Nils Eliasson wrote:
>>>>>
>>>>> Hi Albert,
>>>>>
>>>>> On 2014-09-16 10:45, Albert wrote:
>>>>>> Hi Nils,
>>>>>>
>>>>>> please see comments inline.
>>>>>>
>>>>>> On 09/16/2014 10:16 AM, Nils Eliasson wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I would like review of this change that includes three fixes:
>>>>>>>
>>>>>>> 1) Let Dcmd Compiler.codelist only print alive-nmethods. We ran
>>>>>>> into
>>>>>>> crashes when listing zombies and unloaded too. Alive nmethods
>>>>>>> includes not-entrants so it still gives a pretty good idea about
>>>>>>> whats in the code cache and what has been used recently.
>>>>>>>
>>>>>> What was the cause of these crashes? Is the reason that
>>>>>> nmethod->method() is null?
>>>>>
>>>>> In one case it crashed when nmethod->method()->constants() was
>>>>> null when
>>>>> printing the name.
>>>>>
>>>>> I see that the segmented code cache push already changed to only
>>>>> iterating the alive nmethods so I removed that from the patch.
>>>>>
>>>>>> Would it make sense to print information about zombie methods that
>>>>>> don't lead
>>>>>> to a crash?
>>>>> Probably not. Not_entrant nmethods may stay around for a while,
>>>>> but once
>>>>> zombies they are reclaimed pretty fast.
>>>>>
>>>>>>
>>>>>>
>>>>>>> 2) Take CompileQueue lock when printing queue. It is not enough
>>>>>>> to be
>>>>>>> at a safepoint - the compiler threads may still mutate the list
>>>>>>> causing crashes.
>>>>>>>
>>>>>> Are we guaranteed to not run into a deadlock when we acquire the
>>>>>> lock?
>>>>>
>>>>> Yes. It doesn't use any other lock.
>>>>>
>>>>> New webrev: http://cr.openjdk.java.net/~neliasso/8058461/webrev.05/
>>>>>
>>>>> Thanks Albert and Christian for your feedback.
>>>>>
>>>>> //Nils
>>>>>
>>>>>>
>>>>>> Best,
>>>>>> Albert
>>>>>>> 3) Relax the parsing of long hex-numbers in the test of codelist.
>>>>>>> High addresses (sparc) casues NumberFormatExceptions.
>>>>>>>
>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8058461
>>>>>>> webrev: http://cr.openjdk.java.net/~neliasso/8058461/webrev.04/
>>>>>>>
>>>>>>> Thanks!
>>>>>>> //Nils
>>>>>>
>>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20140918/521395ac/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list