RFR: 8311843: GenShen: assertion failed "Old generation affiliated regions must be less than capacity" [v2]

William Kemper wkemper at openjdk.org
Mon Aug 28 16:44:54 UTC 2023


On Fri, 25 Aug 2023 23:31:21 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> There are a few fixes here:
>> 
>> During a Full GC, the compaction process is not constrained by the maximum capacity for young and old generations. We must, therefore, reestablish these constraints after the Full GC completes by _forcing_ the transfer of regions to old, if necessary.
>> 
>> When a region is "flipped" from the Mutator's free set to the Collector's, we cannot _force_ the transfer of the region because the young generation may not have any free regions.
>> 
>> A logic error in the loop which rebuilds the free set could prevent transferring free regions from the mutator to the collector reserves.
>> 
>> Some unused methods and fields were removed.
>
> William Kemper has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
> 
>  - Merge remote-tracking branch 'shenandoah/master' into full-gc-max-capacity
>  - Do not prematurely exit when reserving regions
>  - 8314610: hotspot can't compile with the latest of gtest because of <iomanip>
>    
>    Reviewed-by: jiefu, stuefe
>  - Force transfer of old regions to old generation capacity after full GC
>  - Remove vestigial member and methods

I'll try letting `ShenandoahFreeSet::flip_to_old_gc` force transferring the region to old. I think it only caused problems because the free regions in the mutator set had not been properly distributed when the free sets were `rebuilt` (that is, it tried to force a young generation with no unaffiliated regions to give one up).

-------------

PR Comment: https://git.openjdk.org/shenandoah/pull/311#issuecomment-1696010692


More information about the shenandoah-dev mailing list