RFR: Fixup root after failed init-partial phase

Roman Kennke rkennke at redhat.com
Mon Oct 16 21:23:23 UTC 2017


We can run OOM during init-partial and are thus subject to the same 
problem that we have in SH::evac_and_update_roots() as described in 
SH::fixup_roots():

- Thread1 attempts to evac an oop ref'd by root1 and fails and cannot 
update that ref.
- Thread2 evacs the same oop, ref'd by root2 and succeeds (i.e. still 
room left in its TLAB)

... leaving the root1 reference dangling.

Solution is the same as we do in evac_and_update_roots() and even in 
final-partial: call SH::fixup_roots() on the failure path.

I suspect this the cause of some of the failures we have occasionally 
seen in stress tests with conc-partial lately. (I cannot reproduce them).

Test: hotspot_gc_shenandoah

http://cr.openjdk.java.net/~rkennke/fixup-roots-after-init-partial/webrev.00/ 
<http://cr.openjdk.java.net/%7Erkennke/fixup-roots-after-init-partial/webrev.00/>

Good?

Roman



More information about the shenandoah-dev mailing list