RFR: 8297286: runtime/vthread tests crashing after JDK-8296324 [v4]

Chris Plummer cjplummer at openjdk.org
Wed Mar 22 21:39:44 UTC 2023


On Wed, 22 Mar 2023 19:06:34 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:

>> The fix is to enable support for late binding JVMTI agents.
>> The fix includes:
>> - New function `JvmtiEnvBase::enable_virtual_threads_notify_jvmti()` which does enabling JVMTI VTMS transition notifications in case of agent loaded into running VM. This function executes a VM operation counting VTMS transition bits in all `JavaThread`'s to correctly set the static counter `_VTMS_transition_count` needed for VTMS transition protocol.
>> - New function `JvmtiEnvBase::disable_virtual_threads_notify_jvmti()` which is needed for testing. It is used by the `WhiteBox` API.
>> - New WhiteBox function `WB_SetVirtualThreadsNotifyJvmtiMode(JNIEnv* env, jobject wb, jboolean enable)` needed for testing of this update.
>> - New regression test: `serviceability/jvmti/vthread/ToggleNotifyJvmtiTest`
>> 
>> Testing:
>> - New test: `serviceability/jvmti/vthread/ToggleNotifyJvmtiTest`
>> - The originally failed tests are expected to pass now:
>>   `runtime/vthread/RedefineClass.java`
>>   `runtime/vthread/TestObjectAllocationSampleEvent.java` 
>> - In progress: Run the tiers 1-6 to make sure there are no regression.
>
> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
> 
>   minor cleanup in enable_virtual_threads_notify_jvmti()

src/hotspot/share/prims/jvmtiExport.cpp line 389:

> 387:     } else {
> 388:       JvmtiVTMSTransitionDisabler::set_VTMS_notify_jvmti_events(true);
> 389:     }

One thing that is a little bit confusing about the changes here is that this is where the fix for [JDK-8296324](https://bugs.openjdk.org/browse/JDK-8296324) went, but for some reason the fix for [JDK-8304303](https://bugs.openjdk.org/browse/JDK-8304303), which was pushed a couple of days ago, removed the [JDK-8296324](https://bugs.openjdk.org/browse/JDK-8296324) changes even though these two bugs don't seem related. The code added by [JDK-8296324](https://bugs.openjdk.org/browse/JDK-8296324) was:

```   if (Continuations::enabled()) {
     // Virtual threads support. There is a performance impact when VTMS transitions are enabled.
     java_lang_VirtualThread::set_notify_jvmti_events(true);
+    if (JvmtiEnv::get_phase() == JVMTI_PHASE_LIVE) {
+      ThreadInVMfromNative __tiv(JavaThread::current());
+      java_lang_VirtualThread::init_static_notify_jvmti_events();
+    }
   }

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13133#discussion_r1145434016


More information about the serviceability-dev mailing list