RFR: 8325187: JVMTI GetThreadState says virtual thread is JVMTI_THREAD_STATE_INTERRUPTED when it no longer is [v2]
Serguei Spitsyn
sspitsyn at openjdk.org
Tue Mar 5 20:00:46 UTC 2024
On Tue, 5 Mar 2024 07:07:27 GMT, David Holmes <dholmes at openjdk.org> wrote:
> I have to say that I don't understand how the behaviour of `RawMonitorWait` is any different to `ObjectMonitor::wait` when it comes to the use of the is_interrupted(true). ??? Is it simply that because we are in native code and we can immediately query the actual thread state that we can observe when the carrier and virtual thread states are transiently different?
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`.
Also, I guess, Alan partially answered this question here:
> For `Object.wait`, the clearing of the interrupt status is done in the Java code, something that will change once `Object.wait` changes to `freeze/unmount` when not pinned.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18093#issuecomment-1979528696
More information about the hotspot-runtime-dev
mailing list