RFR: 8377142: Jtreg test gc/shenandoah/oom/TestThreadFailure.java triggers assert(young_reserve + reserve_for_mixed + reserve_for_promo <= old_available + young_available) failed

William Kemper wkemper at openjdk.org
Wed Feb 11 18:16:10 UTC 2026


On Wed, 11 Feb 2026 18:07:09 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> In ShenandoahGenerationalHeap::compute_old_generation_balance(), adjust old_available and young_available when regions are transferred between young and old generations.
>
> src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp line 771:
> 
>> 769:     young_available -= old_region_deficit * region_size_bytes;
>> 770: 
>> 771:     assert(old_available < old_reserve, "sanity");
> 
> Suggestion:
> 
>     assert(old_available < old_reserve, "Old available (%zu) must be less than old reserve (%zu)", old_available, old_reserve);

I understand what these variables represent, but their names make this comparison feel backward. Shouldn't the reserve rather be limited by what is available?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29621#discussion_r2794742800


More information about the hotspot-gc-dev mailing list