RFR: JDK-8226878: zero crashes after JDK-8191278

Aleksey Shipilev shade at redhat.com
Thu Jun 27 11:38:16 UTC 2019


On 6/27/19 1:04 PM, Ao Qi wrote:
> Hi,
> 
> On zero, StubRoutines::unsafe_arraycopy() may return
> ShouldNotCallThisStub() but not NULL. Is it ok to use
> Copy::conjoint_memory_atomic instead of
> StubRoutines::UnsafeArrayCopy_stub()(src, dst, sz) on zero?
> 
> JBS:
> https://bugs.openjdk.java.net/browse/JDK-8226878
> 
> Fix:
> diff --git a/src/hotspot/share/prims/unsafe.cpp
> b/src/hotspot/share/prims/unsafe.cpp
> --- a/src/hotspot/share/prims/unsafe.cpp
> +++ b/src/hotspot/share/prims/unsafe.cpp
> @@ -401,7 +401,7 @@
>    void* dst = index_oop_from_field_offset_long(dstp, dstOffset);
>    {
>      GuardUnsafeAccess guard(thread);
> -    if (StubRoutines::unsafe_arraycopy() != NULL) {
> +    if (StubRoutines::unsafe_arraycopy() != NULL ZERO_ONLY(&&
> StubRoutines::unsafe_arraycopy() != ShouldNotCallThisStub())) {
>        StubRoutines::UnsafeArrayCopy_stub()(src, dst, sz);
>      } else {
>        Copy::conjoint_memory_atomic(src, dst, sz);
Hold on. I think stubGenerator_zero.cpp should just return NULL when stub is not generated. It looks
like a Zero-specific problem to return "fake" stubs when they are not actually generated. Like this:

diff -r 91b38bfb9079 src/hotspot/cpu/zero/stubGenerator_zero.cpp
--- a/src/hotspot/cpu/zero/stubGenerator_zero.cpp       Thu Jun 27 18:00:54 2019 +0800
+++ b/src/hotspot/cpu/zero/stubGenerator_zero.cpp       Thu Jun 27 13:37:47 2019 +0200
@@ -157,7 +157,9 @@

     StubRoutines::_checkcast_arraycopy       = ShouldNotCallThisStub();
-    StubRoutines::_unsafe_arraycopy          = ShouldNotCallThisStub();
     StubRoutines::_generic_arraycopy         = ShouldNotCallThisStub();

+    // Shared code tests for "NULL" to discover the stub is not generated.
+    StubRoutines::_unsafe_arraycopy          = NULL;
+
     // We don't generate specialized code for HeapWord-aligned source
     // arrays, so just use the code we've already generated

-- 
Thanks,
-Aleksey



More information about the hotspot-dev mailing list