On Wed, 19 Nov 2025 22:55:34 GMT, Leonid Mesnik <[email protected]> wrote:

>> Anton Artemov has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   8366659: Refactored tests.
>
> Changes requested by lmesnik (Reviewer).

@lmesnik are the JVMTI thread state transitions performed in the event posting 
code? If so the different order, and thus different states, would be a concern. 
That said we have noticed that only the timeout case seems to operate in a way 
that the monitor reentry can post contended_enter and contended_entered events, 
which seems very odd in itself. Though I will also note that the way the 
suspension code drops and then re-acquires the monitor, any contended_enter* 
events could get posted multiple times which would also be surprising.

Maintaining the event order is problematic as, with the fix to the deadlock 
issue, we only allow suspension during reentry, and that would mean the 
`monitor_waited` event would be posted whilst the thread is still suspended. To 
be clear(er) in the old code we would do:

wait -> suspend if needed -> resumed -> post monitor_waited -> renter monitor

whereas the new code, if we kept the placement of the event,  would do

wait -> post monitor_waited -> reenter monitor -> suspend if needed and drop 
monitor -> resumed -> reenter monitor

and what the proposed code actually does is

wait -> reenter monitor -> suspend if needed and drop monitor -> resumed -> 
reenter monitor -> post monitor_waited 


Given the lack of specificity in the JVM TI spec around these different events 
I think any assumptions in a TCK test could be challenged, but it would still 
be a change in behaviour.

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

PR Comment: https://git.openjdk.org/jdk/pull/27040#issuecomment-3555943800

Reply via email to