--- old/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2014-03-07 13:34:14.006667151 +0100 +++ new/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2014-03-07 13:34:13.867589778 +0100 @@ -2528,6 +2528,11 @@ assert(!rp->discovery_enabled(), "Post condition"); } + if (has_overflown()) { + // We can not trust g1_is_alive if the marking stack overflowed + return; + } + g1h->unlink_string_and_symbol_table(&g1_is_alive, /* process_strings */ false, // currently strings are always roots /* process_symbols */ true);