On Thu, 12 Dec 2024 17:09:09 GMT, Alan Bateman <al...@openjdk.org> wrote:
> A jdk.VirtualPinnedEvent JFR event is recorded by Object::wait when a virtual > thread waits in Object.wait while pinned. The posting of the event in > ObjectMonitor::wait is done after waiting but it can block again in > enter/ReenterI before it re-acquires. If that happens then the event duration > won't be accurate, and for the off-list case, the enter may be contended and > a jdk.VirtualPinnedEvent event will be recorded for contended monitor enter. > The changes to fix this are small: move the post of the event for Object.wait > to end of the wait function, and only post an event for contended monitor > enter when not waiting. > > I've added a test to check the pinned event that is recored for several > contended monitor enter and Object.wait cases. It checks the event duration > and that only one event is recorded for each case. This pull request has now been integrated. Changeset: fbbc7c35 Author: Alan Bateman <al...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/fbbc7c35f422294090b8c7a02a19ab2fb67c7070 Stats: 490 lines in 2 files changed: 481 ins; 5 del; 4 mod 8346120: VirtualThreadPinned event recorded for Object.wait may have wrong duration or may record second event Reviewed-by: dholmes, pchilanomate ------------- PR: https://git.openjdk.org/jdk/pull/22718