RFR: Fix freeze on OOM during evacuation
Roman Kennke
rkennke at redhat.com
Sun Dec 18 13:24:46 UTC 2016
The run_service() loop in ShenandoahConcurrentThread can still deadlock
when OOM happens during evacuation: when we get out of final-mark, but
have not yet started the GC threads, a Java thread could OOM and the
ShenandoahConcurrentThread never get to resetting the evacuation-in-
progress flag. The Java thread would wait forever and not get to a
safepoint, while the GC waits for Java threads to get to safepoint for
the next pause.
The change fixes it by always resetting the evac flag when coming out
of service_normal_cycle().
Tested by running SPECjvm in a loop 24hours and jcstress.
http://cr.openjdk.java.net/~rkennke/fix-oom-evac/webrev.00
Ok to push?
Roman
More information about the shenandoah-dev
mailing list