On Thu, 20 Apr 2023 01:27:37 GMT, Leonid Mesnik <lmes...@openjdk.org> wrote:

>> This enhancement adds support of virtual threads to the JVMTI `StopThread` 
>> function.
>> In preview releases before this enhancement the StopThread returned the 
>> JVMTI_ERROR_UNSUPPORTED_OPERATION error code for virtual threads.
>> 
>> The `StopThread` supports sending an asynchronous exception to a virtual 
>> thread only if it is current or suspended at mounted state. For instance, a 
>> virtual thread can be suspended at a JVMTI event. If the virtual thread is 
>> not suspended and is not current then the `JVMTI_ERROR_THREAD_NOT_SUSPENDED` 
>> error code is returned. If the virtual thread was suspended at unmounted 
>> state then the `JVMTI_ERROR_OPAQUE_FRAME` error code is returned.
>> 
>> The `StopThread` has the following description for 
>> `JVMTI_ERROR_OPAQUE_FRAME` error code:
>>> The thread is a suspended virtual thread and the implementation 
>>> was unable to throw an asynchronous exception from this frame.
>> 
>> A couple of the `serviceability/jvmti/vthread` tests has been updated to 
>> adopt to new `StopThread` behavior.
>> 
>> The CSR is: https://bugs.openjdk.org/browse/JDK-8306434
>> 
>> Testing:
>> The mach5 tears 1-6 are in progress.
>> Preliminary test runs were good in general.
>> The JDB test `vmTestbase/nsk/jdb/kill/kill001/kill001.java` has been 
>> problem-listed and will be fixed by the corresponding debugger enhancement 
>> which is going to adopt JDWP/JDI specs to new behavior of the JVMTI 
>> `StopThread` related to virtual threads.
>> 
>> Also, two JCK JVMTI tests are failing in the tier-6 :
>>> vm/jvmti/StopThread/stop001/stop00103/stop00103.html
>>> vm/jvmti/StopThread/stop001/stop00103/stop00103a.html
>> 
>> These two tests will be excluded from the test runs by the JCK team and then 
>> adjusted to new `StopThread` behavior.
>
> test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/StopThreadTest.java
>  line 38:
> 
>> 36:  *
>> 37:  * @requires vm.continuations
>> 38:  * @compile --enable-preview -source ${jdk.version} StopThreadTest.java
> 
> --enable-preview is not needed anymore.

Fixed, thanks.

> test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/libStopThreadTest.cpp
>  line 135:
> 
>> 133:   check_jvmti_status(jni, err, "prepareAgent: Failed in JVMTI 
>> SetBreakpoint");
>> 134: 
>> 135:   err = jvmti->SetEventNotificationMode(JVMTI_ENABLE, 
>> JVMTI_EVENT_BREAKPOINT, NULL);
> 
> We have set_event_notification_mode() in jvmti_h.

Fixed, thanks.

> test/hotspot/jtreg/serviceability/jvmti/vthread/StopThreadTest/libStopThreadTest.cpp
>  line 151:
> 
>> 149: Java_StopThreadTest_resumeThread(JNIEnv *jni, jclass cls, jthread 
>> thread) {
>> 150:   LOG("Main: resumeThread\n");
>> 151:   jvmtiError err = jvmti->ResumeThread(thread);
> 
> there is suspend_thread/resume_thread() in jvmti.h

Fixed, thanks.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13546#discussion_r1172784838
PR Review Comment: https://git.openjdk.org/jdk/pull/13546#discussion_r1172785542
PR Review Comment: https://git.openjdk.org/jdk/pull/13546#discussion_r1172785177

Reply via email to