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