On Tue, 5 Mar 2024 19:57:39 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:
> The behavior of ObjectMonitor::wait and RawMonitorWait is different. The Object.wait() throws the InterruptedException if it was interrupted. The RawMonitorWait clears the thread interrupt status and returns the error code JVMTI_ERROR_INTERRUPT. That is not a significant/relevant difference as far as I can see. They both call `thread->is_interrupted(true)`. > For Object.wait, the clearing of the interrupt status is done in the Java > code, Okay so that is where the carrier and virtual thread states get back in sync, and that is what is missing in the `RawMonitorWait` case. The proposed fix/change to `is_interrupted` is what threw me as that is the wrong place to make a change because it affects both cases. What is missing is an upcall from `RawMonitorWait` to some Java code to do the same job as the `Object.wait` Java code does. ------------- PR Comment: https://git.openjdk.org/jdk/pull/18093#issuecomment-1979794228