RFR: 8324173: GenShen: Fix error that could cause young gcs to fail when old marking is running

William Kemper wkemper at openjdk.org
Thu Jan 18 23:39:58 UTC 2024


On Thu, 18 Jan 2024 21:16:56 GMT, William Kemper <wkemper at openjdk.org> wrote:

> Accidentally deleted a line of code in recent PR#382. This violated the following assertion during an extremem run:
> 
> #  Internal Error (/codebuild/output/src3111/src/s3/00/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp:747), pid=1492, tid=1502
> #  assert(_requested_generation == YOUNG) failed: Only young GCs may preempt old.
> 
> Reached by this call stack:
> 
> V  [libjvm.so+0x16ed734]  ShenandoahControlThread::check_cancellation_or_degen(ShenandoahGC::ShenandoahDegenPoint)+0x294  (shenandoahControlThread.cpp:747)
> V  [libjvm.so+0x16ee875]  ShenandoahControlThread::resume_concurrent_old_cycle(ShenandoahGeneration*, GCCause::Cause)+0x1e5  (shenandoahControlThread.cpp:601)
> V  [libjvm.so+0x16eedf3]  ShenandoahControlThread::service_concurrent_old_cycle(ShenandoahHeap*, GCCause::Cause&)+0x1b3  (shenandoahControlThread.cpp:559)
> V  [libjvm.so+0x16f02ae]  ShenandoahControlThread::run_service()+0x9fe  (shenandoahControlThread.cpp:308)

I'm sure we need more jtreg tests to exercise old collections. This assert was caught by an extremem run. There was a race so not even every preempted old marking cycle would trip this assert.

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

PR Comment: https://git.openjdk.org/shenandoah/pull/385#issuecomment-1899386866


More information about the shenandoah-dev mailing list