RFR (XS): 8235305: Corrupted oops embedded in nmethods due to parallel modification during optional evacuation
thomas.schatzl at oracle.com
Fri Jan 17 13:27:59 UTC 2020
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.
> 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:
More information about the hotspot-gc-dev