On Wed, 5 Oct 2022 22:49:20 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:
> The spec of JVM TI GetLocalXXX/SetLocalXXX functions is updated to require > the target thread to be suspended. If not suspended then the > JVMTI_ERROR_THREAD_NOT_SUSPENDED error code is returned by the implementation. > > The CSR is: https://bugs.openjdk.org/browse/JDK-8294690 > > A few tests are impacted by this fix: > > test/hotspot/jtreg/serviceability/jvmti/vthread/GetSetLocalTest > test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadTest > test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/capability/CM01/cm01t011 > > > The following test has been removed as non-relevant any more: > ` > test/hotspot/jtreg/serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java` > > New negative test has been added instead: > ` > test/hotspot/jtreg/serviceability/jvmti/GetLocalVariable/GetSetLocalUnsuspended.java` > > All JVM TI and JPDA tests were used locally for verification. > They were also run in Loom repository with `JTREG_MAIN_WRAPPER=Virtual`. > > Mach5 test runs on all platforms are TBD. src/hotspot/share/prims/jvmtiEnvBase.hpp line 180: > 178: JavaThread* current = JavaThread::current(); > 179: oop cur_obj = current->jvmti_vthread(); > 180: bool is_current = jt == current && (cur_obj == NULL || cur_obj == > thr_obj); It might be better to restructure this "if" and check for jt==current before we ask for cur_obj, or at least add brackets. ------------- PR: https://git.openjdk.org/jdk/pull/10586