RFR (S): 8011699: CMS: assert(_shared_gc_info.id() != SharedGCInfo::UNSET_GCID) failed: GC not started?
Mikael Gerdin
mikael.gerdin at oracle.com
Wed Apr 10 14:41:12 UTC 2013
Erik,
On 2013-04-10 15:15, 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/
I think this looks good.
/Mikael
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8011699
>
> Thanks,
> Erik
More information about the hotspot-gc-dev
mailing list