RFR: 8288387: GetLocalXXX/SetLocalXXX spec should require suspending target thread
Dmitry Samersoff
dsamersoff at openjdk.org
Thu Oct 6 07:20:09 UTC 2022
On Wed, 5 Oct 2022 22:49:20 GMT, Serguei Spitsyn <sspitsyn at 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
More information about the serviceability-dev
mailing list