comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @ 4096:00dd86e542eb

7114303: G1: assert(_g1->mark_in_progress()) failed: shouldn't be here otherwise Summary: Race between the VM thread reading G1CollectedHeap::_mark_in_progress and it being set by the concurrent mark thread when concurrent marking is aborted by a full GC. Have the concurrent mark thread join the SuspendibleThreadSet before changing the marking state. Reviewed-by: tonyp, brutisso
author johnc
date Mon, 28 Nov 2011 09:49:05 -0800
parents bca17e38de00
children dc467e8b2c5e
comparison
equal deleted inserted replaced
4095:bca17e38de00 4096:00dd86e542eb
944 for (int i = 0; i < _aux_num; ++i) { 944 for (int i = 0; i < _aux_num; ++i) {
945 _cur_aux_times_ms[i] = 0.0; 945 _cur_aux_times_ms[i] = 0.0;
946 _cur_aux_times_set[i] = false; 946 _cur_aux_times_set[i] = false;
947 } 947 }
948 948
949 // These are initialized to zero here and they are set during 949 // This is initialized to zero here and is set during
950 // the evacuation pause if marking is in progress. 950 // the evacuation pause if marking is in progress.
951 _cur_satb_drain_time_ms = 0.0; 951 _cur_satb_drain_time_ms = 0.0;
952 _last_satb_drain_processed_buffers = 0;
953 952
954 _last_young_gc_full = false; 953 _last_young_gc_full = false;
955 954
956 // do that for any other surv rate groups 955 // do that for any other surv rate groups
957 _short_lived_surv_rate_group->stop_adding_regions(); 956 _short_lived_surv_rate_group->stop_adding_regions();
1365 (last_pause_included_initial_mark) ? " (initial-mark)" : "", 1364 (last_pause_included_initial_mark) ? " (initial-mark)" : "",
1366 elapsed_ms / 1000.0); 1365 elapsed_ms / 1000.0);
1367 1366
1368 if (print_marking_info) { 1367 if (print_marking_info) {
1369 print_stats(1, "SATB Drain Time", _cur_satb_drain_time_ms); 1368 print_stats(1, "SATB Drain Time", _cur_satb_drain_time_ms);
1370 print_stats(2, "Processed Buffers", _last_satb_drain_processed_buffers);
1371 } 1369 }
1372 1370
1373 if (parallel) { 1371 if (parallel) {
1374 print_stats(1, "Parallel Time", _cur_collection_par_time_ms); 1372 print_stats(1, "Parallel Time", _cur_collection_par_time_ms);
1375 print_par_stats(2, "GC Worker Start", _par_last_gc_worker_start_times_ms); 1373 print_par_stats(2, "GC Worker Start", _par_last_gc_worker_start_times_ms);