RFR (S): 8052172: Evacuation failure handling in G1 does not evacuate all objects if -XX:-G1DeferredRSUpdate is set

Thomas Schatzl thomas.schatzl at oracle.com
Mon Sep 15 14:24:44 UTC 2014


Hi all,

  can I have reviews for the following removal of the
-XX:-G1DeferredRSUpdate functionality?

Problem is that the functionality of -XX:-G1DeferredRSUpdate is broken
(likely since forever): in case of evacuation failure there is the
possibility that some threads add remembered set entries (the ones
experiencing the to-space exhaustion) while other threads are still
iterating over the same remembered set.

This can cause the iterators to skip remembered set entries, which in
turn causes lost objects.

Since XX:-G1DeferredRSUpdate is a (rarely used) develop only flag, it is
not worth (imo) to try to fix this. There is no advantage of using the
current kind of remembered set in conjunction with immediate RSet
updates. If in the future any different RSet implementations were added,
these changes would be comparably easy to add again.

Problem is that having it in the code (and testing it) occasionally
causes test failures. It is easiest to simply remove the functionality.

CR:
https://bugs.openjdk.java.net/browse/JDK-8052172
Webrev:
http://cr.openjdk.java.net/~tschatzl/8052172/webrev/
Testing:
jprt

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list