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
