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

Roman Kennke rkennke at redhat.com
Tue Nov 26 11:36:49 UTC 2019


Looks good, thanks!

Roman

> 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