RFR(S): G1: assert(da ? referent->is_oop() : referent->is_oop_or_null()) failed: referenceProcessor.cpp:1054

Tony Printezis tony.printezis at oracle.com
Mon Oct 3 20:23:39 UTC 2011


John,

It looks OK.

Could somebody else also have a quick look so that John can push it 
today soon-ish? Thanks.

Tony

On 10/03/2011 04:09 PM, John Cuthbertson wrote:
> Hi Everyone,
>
> Can I have a couple of volunteers to review the changes for this CR? 
> The webrev can be found at: 
> http://cr.openjdk.java.net/~johnc/7097053/webrev.0/
>
> Summary:
> During RSet scanning the reference processor was discovering a 
> reference oop whose referent object failed the is_oop() test in the 
> failing assert. It appears that is was being caused by a race between 
> RSet updating (which did not perform reference discovery) and RSet 
> scanning (which did) and so the reference processor could see a 
> referent object that was in the process of being copied. To resolve 
> this issue we have decided to not do reference discovery duing RSet 
> scanning.
>
> Testing: The failing test case (with a 1ms delay between object 
> forwarding and copying - which increases the frequency of hitting the 
> assert almost 3x) on highly threaded SPARC T2 systems; OpenDS on x64.
>
> Thanks,
>
> JohnC



More information about the hotspot-gc-dev mailing list