RFR(XS): G1: Concurrent mark stuck in loop calling os::elapsedVTime()
    Per Liden 
    per.liden at oracle.com
       
    Wed Apr 30 13:13:08 UTC 2014
    
    
  
Hi,
Here's another G1 concurrent mark fix I'd like to have reviewed.
Summary: If the heap is expended when a concurrent mark is in progress 
there's a window where the global marking finger (_cm->_finger) points 
past the heap end (_cm->_heap_end). When this happens the marking 
threads will get stuck in a loop spinning, because _cm->out_of_regions() 
will still return false. out_of_regions() is currently implemented as 
"return _finger == _heap_end;".
This patch fixes this problem by adjusting out_of_region() to instead be 
"return _finger >= _heap_end;". This is safe because objects in those 
new regions will be considered live anyway, because their TAMS will be 
equal to bottom.
Bug: https://bugs.openjdk.java.net/browse/JDK-8040804
Webrev: http://cr.openjdk.java.net/~pliden/8040804/webrev.0/
/Per
    
    
More information about the hotspot-gc-dev
mailing list