Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8142729 | emb-9 | Bengt Rutisson | P3 | Resolved | Fixed | team |
Running with -XX:+CMSScavengeBeforeRemark will do an extra call to GenCollectedHeap::do_collection() inside CMSCollector::checkpointRootsFinal().
Inside CMSCollector::checkpointRootsFinal() we already have a valid GC id set up, but the call to GenCollectedHeap::do_collection() will create a new one using a GCIdMark, which means that when it returns the GC id is set to undefined.
It is correct that GenCollectedHeap::do_collection() creates a new GC id since we are doing one extra GC there. But it should not reset the GC id to undefined when it is done.
Inside CMSCollector::checkpointRootsFinal() we already have a valid GC id set up, but the call to GenCollectedHeap::do_collection() will create a new one using a GCIdMark, which means that when it returns the GC id is set to undefined.
It is correct that GenCollectedHeap::do_collection() creates a new GC id since we are doing one extra GC there. But it should not reset the GC id to undefined when it is done.
- backported by
-
JDK-8142729 CMSScavengeBeforeRemark broken after JDK-8134953
- Resolved
- relates to
-
JDK-8139877 Improve TestCMSScavengeBeforeRemark
- Closed
-
JDK-8134953 Make the GC ID available in a central place
- Resolved