Request for review (S): 8008382: Remove redundant use of Atomic::add(jlong, jlong *) in create_new_gc_id()

Stefan Karlsson stefan.karlsson at oracle.com
Tue Feb 19 11:49:40 UTC 2013


On 02/19/2013 11:15 AM, Bengt Rutisson wrote:
>
> Hi again,
>
> Erik Helin pointed out a potential race in CMS where the concurrent 
> cycle may be trying to increment the GC id in parallel with a young 
> collection. This is scary for other reasons as well but removing the 
> atomic call exposes it. We concluded that the safe change is to move 
> the call to register_gc_start() in to the CMS VM operation. This way 
> we get the VM operation synchronization and can be sure that two 
> threads are never incrementing the GC id in parallel.

Yes, this is better.

thanks,
StefanK

>
> Updated webrev here:
> http://cr.openjdk.java.net/~brutisso/8008382/webrev.01/
>
> Bengt
>
> On 2/18/13 2:21 PM, Bengt Rutisson wrote:
>>
>> Hi all,
>>
>> Could I have a couple of reviews for this change?
>> http://cr.openjdk.java.net/~brutisso/8008382/webrev.00/
>>
>> There is no need to use atomics in create_new_gc_id() since it is not 
>> called by multiple threads in parallel. Also, Atomic::add(jlong, 
>> jlong *) is broken for ARM.
>>
>> We should remove the use of Atomic::add in create_new_gc_id() for 
>> now. If we need this to be called by multiple threads in the future 
>> we have to reconsider how this should be done. Either adding a lock 
>> or doing some kind of 32 bit atomic work.
>>
>> Thanks,
>> Bengt
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20130219/61d24b75/attachment.htm>


More information about the hotspot-gc-dev mailing list