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