RFR: 8330253: Skip verify_consistent_lock_order when deoptimizing from monitorenter bytecode.

Vladimir Kozlov kvn at openjdk.org
Mon Apr 15 17:01:59 UTC 2024


On Mon, 15 Apr 2024 09:15:44 GMT, Axel Boldt-Christmas <aboldtch at openjdk.org> wrote:

> The verification added in [JDK-8329757](https://bugs.openjdk.org/browse/JDK-8329757) will not work then deoptimization occurs on a monitorenter bytecode. The locking may be in a transitional state. This patch will skip the verification when this occurs.
> 
> Currently have only seen this reproduce with JVMTI when deoptimization occurs while a java thread is waiting on a contended monitor. However this could potentially be triggered from a VM entry slow path, so simply checking `current_pending_monitor` could be flaky as well. So instead simply avoid verification.
> 
> Running JVMTI reproducer. Starting full testing soon.

src/hotspot/share/runtime/deoptimization.cpp line 443:

> 441:   }
> 442: #ifdef ASSERT
> 443:   if (LockingMode == LM_LIGHTWEIGHT && !realloc_failures && lock_order.is_nonempty()) {

I think ` lock_order.is_nonempty()` check is enough here because it will not be empty only if other two conditions are true.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/18782#discussion_r1566164427


More information about the hotspot-dev mailing list