RFR Shenandoah: Don't recycle trash regions before concurrent root processing

Zhengyu Gu zgu at redhat.com
Tue Nov 26 01:09:57 UTC 2019


Concurrent root processing requires Collection Set kept intact, because 
it is needed to determine if an oop is alive or dead.

Roman pointed out that our trash recycle-assist could recycle trash 
regions prematurely. That results some of dead oops suddenly become 
alive, as recycled regions becomes new regions and those dead oops are 
above TAMS. This problem is exhibited by is_loader_alive() assertion 
failure in CriticalNativeStress tests.

The solution is to avoid recycling trash region before concurrent root 
processing is completed.

Webrev: 
http://cr.openjdk.java.net/~zgu/early_recycle_trash/webrev.00/index.html

Test:
   tier3_gc_shenandoah with 20 iterations, usually fails within 10 
iterations without the fix.

Thanks,

-Zhengyu



More information about the shenandoah-dev mailing list