On Wed, 1 Oct 2025 22:13:58 GMT, Patricio Chilano Mateo 
<[email protected]> wrote:

> Please review the following fix. When blocking in 
> `ObjectMonitor::enter_internal` we currently use timed-park for pinned 
> virtual threads. This is done to alleviate some potential deadlocks cases 
> where the successor is an unmounted virtual thread that cannot run. In 
> particular this could happen during class loading/initialization if all other 
> carriers are blocked waiting for the same class to be loaded/initialized.
> This mechanism should be extended to cover `ObjectMonitor::reenter_internal` 
> used in `Object.wait` (notification case). Also, the criteria to decide 
> whether to do a timed-park should be based on whether there are unmounted 
> vthreads already in the `_entry_list`, and not just if this is a pinned 
> virtual thread. This covers mixed usages of the same ObjectMonitor between 
> virtual threads and platform threads. This will become more relevant once we 
> bring the changes currently in the fibers branch to preempt virtual threads 
> during klass initialization.
> 
> These changes have been running in the loom pipeline for a couple of months 
> already. I also added a new test case to 
> test/jdk/java/lang/Thread/virtual/MonitorWaitNotify.java which deadlocks 
> without these changes.
> 
> Thanks,
> Patricio

This pull request has now been integrated.

Changeset: 9feb8f21
Author:    Patricio Chilano Mateo <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/9feb8f21b5d000f8901938f1dde89638c79ca805
Stats:     206 lines in 4 files changed: 180 ins; 3 del; 23 mod

8369019: Improve timed-park mechanism in ObjectMonitor for virtual thread 
support

Reviewed-by: dholmes, alanb

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

PR: https://git.openjdk.org/jdk/pull/27597

Reply via email to