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