RFR: JDK-8077265 Modify assert to help debug JDK-8068448

Eric Caspole eric.caspole at oracle.com
Mon Apr 13 15:52:27 UTC 2015

Thinking about it over the weekend, I really do want some new asserts in 
psOldGen because it should catch the problem in a different/interesting way.
I am happy to back out the  changes in psPromotionLAB.cpp and hpp, since 
that part already catches the problem.

Stefan, do you want to this change to use the macro in psOldGen as I was 
doing before or refactor into a new function?

On 4/10/2015 9:19 AM, Stefan Karlsson wrote:
> On 2015-04-10 15:15, Eric Caspole wrote:
>> I don't want to make sweeping changes to try to debug what seems like 
>> a race.
>> If you dont like the macro in psOldGen I will remove it and just go 
>> on with the original one.
> Sounds good to me.
> StefanK
>> Eric
>> On 4/10/2015 4:43 AM, Stefan Karlsson wrote:
>>> On 2015-04-09 22:17, Eric Caspole wrote:
>>>> Hi everybody,
>>>> I updated this so the psOldGen part use a macro as Stefan suggested.
>>>> The assert in psPromotionLAB.hpp is allocating out of an already 
>>>> allocated PLAB, so I don't think that one will ever be hit but I 
>>>> want it there just in case.
>>>> And as Jesper suggested I made the message more helpful in the 
>>>> original place.
>>>>  http://cr.openjdk.java.net/~ecaspole/JDK-8077265/01/webrev/
>>> I had hoped you would use the new define for all assert, but you've 
>>> only used it for two out of four. If you're not going to use the 
>>> same macro for all usages, it doesn't seem worth having.
>>> http://cr.openjdk.java.net/~ecaspole/JDK-8077265/01/webrev/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp.udiff.html 
>>> It seems to me that we could refactor allocate_noexpand and 
>>> cas_allocate_noexpand to use a common function to do the assert and 
>>> update the start array. That way you could get rid of the macro you 
>>> added.
>>> Thanks,
>>> StefanK
>>>> Passes JPRT.
>>>> Thanks,
>>>> Eric
>>>> On 4/9/2015 10:01 AM, Stefan Karlsson wrote:
>>>>> Hi Eric,
>>>>> On 2015-04-09 15:19, Eric Caspole wrote:
>>>>>> HI everybody,
>>>>>> Here is a webrev to add more asserts related to debugging 
>>>>>> JDK-8068448. Beyond capturing more info in the original assert, 
>>>>>> after looking at another core I added more asserts to make sure 
>>>>>> there is no other place where old gen allocations would overrun 
>>>>>> the start array.
>>>>> Why didn't these two new asserts get the same, more informative, 
>>>>> error message as the first assert you changed? Maybe you could 
>>>>> extract the check out to a helper macro that prints the relevant 
>>>>> information?
>>>>> Another point that Bengt mentioned yesterday, is that we don't 
>>>>> really need to print the old_gen part of the assert. It's already 
>>>>> printed in the hs_err file.
>>>>> Thanks,
>>>>> StefanK
>>>>>>  http://cr.openjdk.java.net/~ecaspole/JDK-8077265/00/webrev/
>>>>>> Passes JPRT.
>>>>>> Thanks,
>>>>>> Eric

More information about the hotspot-gc-dev mailing list