--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu May 29 14:31:28 2014 +0200
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jun 04 14:16:20 2014 +0200
@@ -2174,14 +2174,20 @@
}
void G1CollectedHeap::stop() {
- // Abort any ongoing concurrent mark and stop all concurrent threads.
- // We do this to make sure these threads do not continue to execute
- // and access resources (e.g. gclog_or_tty) that are destroyed during
- // shutdown.
- _cm->set_has_aborted();
+#if 0
+ // Stopping concurrent worker threads is currently disabled until
+ // some bugs in concurrent mark has been resolve. Without fixing
+ // those bugs first we risk haning during VM exit when trying to
+ // stop these threads.
+
+ // Abort any ongoing concurrent root region scanning and stop all
+ // concurrent threads. We do this to make sure these threads do
+ // not continue to execute and access resources (e.g. gclog_or_tty)
+ // that are destroyed during shutdown.
_cm->root_regions()->abort();
_cm->root_regions()->wait_until_scan_finished();
stop_conc_gc_threads();
+#endif
}
size_t G1CollectedHeap::conservative_max_heap_alignment() {