RFR(s): 8228758: assert(_no_handle_mark_nesting == 0) failed: allocating handle inside NoHandleMark
David Holmes
david.holmes at oracle.com
Fri Aug 30 01:24:19 UTC 2019
Hi Robbin,
On 29/08/2019 10:48 pm, Robbin Ehn wrote:
> Hi all, please review.
>
> The JNI_QUICK_ENTRY/JVM_QUICK_ENTRY skips creating the
> HandleMarkCleaner, instead they have a NoHandleMark. Handshakes can
> be executed by the JavaThread itself, thus might require a
> HandleMark. QUICK entries allow polls for safepoint/handshakes, if a
> handshake is executed and a HandleMark is created we hit this
> assert.
>
> HandleMarkCleaner have previous been optimized for inlining, thus cheap.
> Performance benchmarks shows no benefit of not allowing HandleMark.
>
> This changeset removes the the QUICK entry and avoids this issue.
>
> Note that JNI_QUICK_ENTRY also don't have WeakPreserveExceptionMark,
> so it's changed to JNI_ENTRY_NO_PRESERVE.
Why did you extend this to the JNI_QUICK_ENTRY case when the impacted
code was only a JVM_QUICK_ENTRY? The expanded scope of the change seems
unnecessary given this is just a workaround for a particular failure mode.
Thanks,
David
> Issue:
> https://bugs.openjdk.java.net/browse/JDK-8228758
>
> Changeset:
> http://cr.openjdk.java.net/~rehn/8228758/webrev/
>
> Passes t1-3 (and performance benchmarks)
>
> Thanks, Robbin
More information about the hotspot-runtime-dev
mailing list