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.


> 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