RFR: Reference processing deadlocks with -ParallelRefProcEnabled

Aleksey Shipilev shade at redhat.com
Tue Jun 6 11:43:55 UTC 2017


Reference processing deadlocks with -ParallelRefProcEnabled, because we have the
terminator that can be used only once. However, RP can call the closure several
times, and on second use the product build deadlocks. fastdebug fails with:

#  Internal Error
(/home/shade/trunks/shenandoah-jdk9/hotspot/src/share/vm/gc/shared/taskqueue.cpp:155),
pid=465, tid=480
#  assert(_offered_termination < _n_threads) failed: Invariant

The solution is to terminator reusable after closure is done with it:
 http://cr.openjdk.java.net/~shade/shenandoah/refproc-non-mt/webrev.01/

New test captures the failure.

Testing: hotspot_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list