On Tue, 20 Jan 2026 20:32:07 GMT, Daniel D. Daugherty <[email protected]> 
wrote:

>> src/hotspot/share/runtime/objectMonitor.cpp line 1869:
>> 
>>> 1867: 
>>> 1868:   int ret = OS_OK;
>>> 1869:   bool was_notified = true;
>> 
>> L2021: // Monitor notify has precedence over thread interrupt.
>> 
>> With this change to `was_notified` default value, I don't think we can say
>> that monitor notify has precedence over thread interrupt anymore.
>
> I've tracked that comment back to this very old changeset:
> 
> 
> $ git log 22929fb78f46^!
> commit 22929fb78f4606f726b652a25772980336398575
> Author: Karen Kinnear <[email protected]>
> Date:   Fri Oct 22 15:59:34 2010 -0400
> 
>     6988353: refactor contended sync subsystem
>     
>     Reduce complexity by factoring synchronizer.cpp
>     
>     Reviewed-by: dholmes, never, coleenp

I think Dan is right that this has changed the behaviour by deciding 
`was_notified` earlier in the process. Now this check:

1882       if (interrupted || HAS_PENDING_EXCEPTION) {
1883         was_notified = false;

will supercede the fact we could actually have been notified. And that is a 
problem because if the current was notified but now throws InterruptedException 
then we lose the notification.  I think my suggestion to set `was_notified` at 
1883 was wrong - we need to  undo that. 

The key point is that if we unlink ourselves then we were definitely not 
notified; otherwise we must have been.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27040#discussion_r2710053165

Reply via email to