RFR: 8224966: ZGC: Don't skip oop verification in OopMapSet::all_do()
per.liden at oracle.com
Wed Jun 5 08:35:50 UTC 2019
Thanks for reviewing, Stefan. I agree, and I'll wait until Nils' patch
has been pushed.
On 6/5/19 10:22 AM, Stefan Karlsson wrote:
> On 2019-05-29 11:27, Per Liden wrote:
>> When ZGC is enabled, we skip oop verification in OopMapSet::all_do().
>> There's no good reason to skip that. The comment suggesting this is
>> skipped because a safepoint can happen between a load and the barrier
>> is incorrect. We can still do the verification as is_in_or_null()
>> doesn't require the address to have a "good" color.
> I think the comment is correct. The following situation can cause
> failure in the verification:
> register = Object.field
> load barrier for register
> If Object.field points into the old collection set, and we perform a
> mark start or mark end pause, we'll perform a stack walk and hit this
> assert because Heap::is_in_or_null(Object.field) will return false.
> I applied the patch and ran stress testing with large collection sets,
> and eventually hit this assert during the mark start phase.
>> Also, once JDK-8224675 is integrated, this comment will make even less
> Right. After Nils' changes this shouldn't be a problem anymore.
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8224966
>> Webrev: http://cr.openjdk.java.net/~pliden/8224966/webrev.0
> Looks good, after Nils' changes have been pushed.
More information about the hotspot-gc-dev