Review request (S): 7131791 G1: Asserts in nightly testing due to 6976060

Bengt Rutisson bengt.rutisson at oracle.com
Fri Jan 20 17:21:47 UTC 2012


Stefan and Tony,

Thanks for the really fast reviews!

My job is now in JPRT. I hope it makes it in before the nightlies tonight.

Thanks again for all the help from both of you!
(You both helped me much more today than what is visible in this email 
thread!)
Bengt

On 2012-01-20 18:05, Bengt Rutisson wrote:
>
> Here is an updated webrev with the added assert:
> http://cr.openjdk.java.net/~brutisso/7131791/webrev.05
>
> Bengt
>
> On 2012-01-20 17:56, Bengt Rutisson wrote:
>>
>> Stefan, are you OK with adding the assert that Tony suggested?
>>
>> Bengt
>>
>> On 2012-01-20 17:44, Stefan Karlsson wrote:
>>> On 2012-01-20 17:46, Bengt Rutisson wrote:
>>>>
>>>> Stefan,
>>>>
>>>> Thanks for the prompt review!
>>>>
>>>> Comments inline.
>>>>
>>>> On 2012-01-20 17:21, Stefan Karlsson wrote:
>>>>> On 20 jan 2012, at 17:06, Bengt Rutisson 
>>>>> <bengt.rutisson at oracle.com <mailto:bengt.rutisson at oracle.com>> wrote:
>>>>>
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> Can I have a couple of quick reviews for this small change:
>>>>>> http://cr.openjdk.java.net/~brutisso/7131791/webrev.02 
>>>>>> <http://cr.openjdk.java.net/%7Ebrutisso/7131791/webrev.02>
>>>>>>
>>>>>> This should hopefully fix the 500+ failures in the G1 nightlies. 
>>>>>> So, I would like to get it in before the nightlies tonight.
>>>>>>
>>>>>> The issue is that we call collect() which will trigger a 
>>>>>> collection without protecting the memory that we just allocated 
>>>>>> for a humongous object. The fix (thanks Tony for helping me 
>>>>>> out!!!) is to fake an object and create a handle to it before we 
>>>>>> call collect.
>>>>>
>>>>> 1067         Handle h((oop)result);  
>>>>> 1068         collect(GCCause::_g1_humongous_allocation);
>>>>> 1069       }
>>>>> 1070       return result;
>>>>> 1071     }
>>>>> Can we really have a handle to uninitialized memory?
>>>>
>>>> The memory is not uninitialized since I fake an object there with 
>>>> the call to CollectedHeap::fill_with_object(result, word_size, 
>>>> false); just before the code you have above.
>>>
>>> I missed that.
>>>
>>>>
>>>>> Are you sure that the humongous object will not be moved by a full collection. You should probably return h() instead of result.
>>>>
>>>> Humongous objects will not be moved by G1 collections so I think we 
>>>> are ok.
>>>
>>> OK. But maybe we should be a bit defensive and return h() here.
>>>
>>> StefanK
>>>
>>>>
>>>> Thanks for the prompt review!
>>>>
>>>> Bengt
>>>>>
>>>>> StefanK
>>>>>
>>>>>>
>>>>>> Bengt
>>>>
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20120120/f3738c7d/attachment.htm>


More information about the hotspot-gc-dev mailing list