# HG changeset patch # User tonyp # Date 1254758748 14400 # Node ID 1f19207eefc2df50ee216314fc2895a815c95009 # Parent ff2402f6a50b7c36716495c5afcc3c0025bc4b14 6847956: G1: crash in oopDesc*G1ParCopyHelper::copy_to_survivor_space(oopDesc*) Summary: When we copy objects to survivors during marking, we incorrectly set NTAMS to bottom, which causes marking to miss visiting some of those objects. Reviewed-by: apetrusenko, iveresov diff -r ff2402f6a50b -r 1f19207eefc2 src/share/vm/gc_implementation/g1/heapRegion.hpp --- a/src/share/vm/gc_implementation/g1/heapRegion.hpp Fri Oct 02 16:20:42 2009 -0400 +++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp Mon Oct 05 12:05:48 2009 -0400 @@ -569,13 +569,8 @@ // ever evacuated into this region. If we evacuate, allocate, and // then evacuate we are in deep doodoo. void note_end_of_copying() { - assert(top() >= _next_top_at_mark_start, - "Increase only"); - // Survivor regions will be scanned on the start of concurrent - // marking. - if (!is_survivor()) { - _next_top_at_mark_start = top(); - } + assert(top() >= _next_top_at_mark_start, "Increase only"); + _next_top_at_mark_start = top(); } // Returns "false" iff no object in the region was allocated when the