[14] RFR (XS): 8235305: Corrupted oops embedded in nmethods due to parallel modification during optional evacuation

Stefan Johansson stefan.johansson at oracle.com
Fri Jan 17 14:41:13 UTC 2020


Hi Thomas,

On 2020-01-17 14:27, Thomas Schatzl wrote:
> Hi Stefan,
> 
> On 17.01.20 10:06, Stefan Johansson wrote:
>> Hi Thomas,
>>
>> On 2020-01-16 14:20, Thomas Schatzl wrote:
>>> Hi all,
>>>
>>>    can I get reviews for this change that fixes a bug in the 
>>> abortable mixed gc algorithm where G1 might corrupt oops embedded in 
>>> nmethods due to parallel modification during an optional evacuation 
>>> phase?
>>>
>>> G1 currently collects embedded oops in nmethods twice: once in the 
>>> optional roots list, and once as nmethods in the strong code roots 
>>> list for a particular region.
>>>
>>> Now it can happen that this oop embedded in in the code stream is 
>>> unaligned, so if that oop is modified during relocation word tearing 
>>> may occur, causing follow-up crashes.
>>>
>>> The fix is to not collect oops from nmethods in the optional code 
>>> root list as the strong code root list for a particular region 
>>> already always contains it anyway.
>>>
>>> Thanks go to stefank, eriko and sjohanss for helping with analyzing, 
>>> testing and the discussion around it.
>>>
>>> CR:
>>> https://bugs.openjdk.java.net/browse/JDK-8235305
>>> Webrev:
>>> http://cr.openjdk.java.net/~tschatzl/8235305/webrev/
>>
>> Fix looks good. 
> 
> Thanks for your review.
> 
>> Just some things around the naming of the template parameter and enum 
>> after adding this. I don't have a much better idea
> [...]
> 
> Talked to them about this and I'm good with their suggestion:
> 
> http://cr.openjdk.java.net/~tschatzl/8235305/webrev.1 (full)
> http://cr.openjdk.java.net/~tschatzl/8235305/webrev.0_to_1 (diff)
This looks good!

Thanks,
Stefan

> 
> Thanks,
>    Thomas
> 


More information about the hotspot-gc-dev mailing list