RFR: Disable UseFastJNIAccessors for Shenandoah

Aleksey Shipilev shade at redhat.com
Tue Jun 5 10:42:16 UTC 2018


On 06/05/2018 12:40 PM, Roman Kennke wrote:
> Erik Österlund pointed out a nasty bug in the JNI fast-get-field code.
> This code is executed in thread-native state, which means it doesn't
> keep safepoints from happening. Between the forward pointer load and the
> actual field load, the thread may get descheduled, and 1 or more
> safepoints can happen, and the actual field access would crash. This
> problem hasn't happened in all those years (at least not knowingly), but
> *if* it happens, it's catastrophic.
> 
> See also:
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-June/032763.html
> 
> We may have a solution, but currently have more important fires to put out.
> 
> 
> diff --git a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> @@ -172,6 +172,13 @@
>                   "are observed on class-unloading sensitive workloads");
>      FLAG_SET_DEFAULT(ClassUnloadingWithConcurrentMark, false);
>    }
> +
> +  // JNI fast get field stuff is not currently supported by Shenandoah.
> +  // It would introduce another heap memory access for reading the
> forwarding
> +  // pointer, which would have to be guarded by the signal handler
> machinery.
> +  // See:
> +  //
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2018-June/032763.html
> +  FLAG_SET_DEFAULT(UseFastJNIAccessors, false);
>  }
> 
>  size_t ShenandoahArguments::conservative_max_heap_alignment() {

Looks good.

-Aleksey



More information about the shenandoah-dev mailing list