[8u] RFR: Shenandoah: fix forceful pacer claim

Roman Kennke rkennke at redhat.com
Thu Jul 23 10:11:23 UTC 2020


Ok. Good find!

Thanks,
Roman


On Thu, 2020-07-23 at 11:38 +0200, Aleksey Shipilev wrote:
> 	Error verifying signature: Cannot verify message signature:
> Incorrect message format
> Hey,
> 
> Looks like we have a little day-1 bug in sh/jdk8.
> 
> Compare:
>  8u:
> https://hg.openjdk.java.net/shenandoah/jdk8/hotspot/file/e276bbfff22f/src/share/vm/gc_implementation/shenandoah/shenandoahPacer.cpp#l216
>  head:
> https://hg.openjdk.java.net/jdk/jdk/file/6c6087cff3bb/src/hotspot/share/gc/shenandoah/shenandoahPacer.cpp#l209
> 
> So on the pacer blocking path, we do not forcefully claim the pacing
> budget, which means pacer
> allows more slack than it should. I believe this was the 8u backport
> where I added "force"
> parameter, but omitted actually using it:
>   
> https://hg.openjdk.java.net/shenandoah/jdk8/hotspot/rev/5114410c2684#l6.18
> 
> This went largely unnoticed, because current 8u code does not check
> the result of claim_for_alloc.
> But it does so with JDK-8247367 backport and it fails the assert:
>   https://hg.openjdk.java.net/jdk/jdk/rev/a39eb5a4f1c1#l1.28
> 
> sh/jdk8 fix is to match jdk/jdk:
> 
> diff -r 0067bf851998
> src/share/vm/gc_implementation/shenandoah/shenandoahPacer.cpp
> ---
> a/src/share/vm/gc_implementation/shenandoah/shenandoahPacer.cpp     W
> ed Jun 17 09:43:16 2020 +0200
> +++
> b/src/share/vm/gc_implementation/shenandoah/shenandoahPacer.cpp     T
> hu Jul 23 11:08:17 2020 +0200
> @@ -216,7 +216,7 @@
>    intptr_t new_val = 0;
>    do {
>      cur = OrderAccess::load_acquire(&_budget);
> -    if (cur < tax) {
> +    if (cur < tax && !force) {
>        // Progress depleted, alas.
>        return false;
>      }
> 
> Testing: hotspot_gc_shenandoah {fastdebug,release}
> 



More information about the shenandoah-dev mailing list