The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
G1 failed the guarantee while running GCBasher on T2000.
Error: guarantee(_cm->out_of_regions() && _cm->region_stack_empty() && _task_queue->size() == 0,"only way to reach here")
The fix is to remove the guarantees as they are too strong.
Here's an alternative that we might want to look at in the future. If we wanted to skip the push on the region stack, we could introduce a CM task-local region entry and store the last entry there instead pushing it on the stack there. When the CM task restarts, we have to make sure that we check that entry first before we pop any more entries from the region stack. This way we can leave the guarantees in.
_cm->region_stack_empty() can become not empty again because if some thread in aborting in CMTask::drain_region_stack() it will push a partially done region back.