RFR: 8351464: Shenandoah: Hang on ShenandoahController::handle_alloc_failure when run test TestAllocHumongousFragment#generational

William Kemper wkemper at openjdk.org
Tue Mar 11 22:32:52 UTC 2025


On Tue, 11 Mar 2025 21:52:00 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:

>> Failed allocations may race to cancel the GC with the collector who is working to clear the cancelled GC. When the GC wins this race, it will fail to notify threads that are waiting for the failed GC cycle to complete. This change directly tracks the number of threads waiting due to an allocation failure, rather than indirectly tracking them through the cancelled gc state.
>> 
>> # Testing
>> Ran TestAllocHumongousFragment#generational 6,500 times without failures.
>
> src/hotspot/share/gc/shenandoah/shenandoahGenerationalControlThread.cpp line 281:
> 
>> 279: 
>> 280:   {
>> 281:     MonitorLocker ml(&_alloc_failure_waiters_lock);
> 
> Should the notification code be encapsulated in method `notify_alloc_failure_waiters()`?

Yes, will do this when I take out the waiter counts.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23997#discussion_r1990208348


More information about the shenandoah-dev mailing list