On Thu, 13 Jul 2023 19:18:38 GMT, Alex Menkov <amen...@openjdk.org> wrote:
> The change fixes handling of "suspended" bit in VT state. > The code looks very strange. > java_lang_VirtualThread::RUNNING == 3, so line 803 clears > JVMTI_THREAD_STATE_ALIVE(1) and JVMTI_THREAD_STATE_TERMINATED(2) > Per log this code came from loom repo with VT integration. > > Testing: tier1-4, updated GetThreadStateMountedTest.java @alexmenkov Do you consider backporting this to 21? src/hotspot/share/prims/jvmtiEnvBase.cpp line 804: > 802: if (ext_suspended && ((state & JVMTI_THREAD_STATE_ALIVE) != 0)) { > 803: state |= JVMTI_THREAD_STATE_SUSPENDED; > 804: } One question unrelated to this bug and your fix. I wonder if any check and handling is needed for the case: `if (ext_suspended && ((state & JVMTI_THREAD_STATE_ALIVE) == 0))` Not sure this condition is even possible. But do we need to add an assert here? ------------- PR Comment: https://git.openjdk.org/jdk/pull/14878#issuecomment-1635229248 PR Review Comment: https://git.openjdk.org/jdk/pull/14878#discussion_r1263261620