RFR (S): 8011699: CMS: assert(_shared_gc_info.id() != SharedGCInfo::UNSET_GCID) failed: GC not started?
Stefan Karlsson
stefan.karlsson at oracle.com
Wed Apr 10 14:34:10 UTC 2013
On 04/10/2013 03:15 PM, Erik Helin wrote:
> Hi all,
>
> this change fixes an issue with the reporting of concurrent mode
> failure for the trace framework for CMS.
>
> The problem was that a background collection in CMS (the function
> collect_in_background) updated _collectorState to InitialMark before
> the method report_gc_start was called on the CMS GC tracer. If the
> background GC was aborted before the call to report_gc_start, we would
> then report concurrent mode failure on a GC tracer that is not started
> (an invalid state for a GC tracer).
>
> The fix is to move the call to report_gc_start to the same place in
> collect_in_background as where _collectorState is updated. However,
> this means that the heap_summary_before_gc event must be sent from
> checkpointRootsInitialPre due to lock ordering (Metaspace lock and CGC
> lock). Furthermore, collect_in_foreground must ensure that it does not
> call report_gc_start a second time (in the case when
> collect_in_foreground takes over a background GC).
>
> Webrev:
> http://cr.openjdk.java.net/~ehelin/8011699/webrev.00/
Looks good.
StefanK
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8011699
>
> Thanks,
> Erik
More information about the hotspot-gc-dev
mailing list