On Tue, 22 Sep 2026 09:26:48 GMT, Serguei Spitsyn <[email protected]> wrote:
> The test > `serviceability/jvmti/events/FieldModification/fieldmod02/fieldmod02.java` is > crashing with the option: > `-XX:-DoJVMTIVirtualThreadTransitions`. > The capability `can_support_virtual_threads` must be rejected with the VM > option `-XX:-DoJVMTIVirtualThreadTransitions`. The fix is implementing it. It > impacts just a couple of code lines. > > Testing: > - Run the test > `serviceability/jvmti/events/FieldModification/fieldmod02/fieldmod02.java` > with the option `-XX:-DoJVMTIVirtualThreadTransitions`. Now, it is failed > with rejecting the capability instead of crashing: > > (AddCapabilities) unexpected error: JVMTI_ERROR_NOT_AVAILABLE (98) > Error occurred during initialization of VM > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). Overall looks good. I added a suggestion for future cleanup. src/hotspot/share/prims/jvmtiManageCapabilities.cpp line 106: > 104: jc.can_generate_resource_exhaustion_heap_events = 1; > 105: jc.can_generate_resource_exhaustion_threads_events = 1; > 106: jc.can_support_virtual_threads = DoJVMTIVirtualThreadTransitions; This flag may have bit rotted a bit, and that shows here. It has essentially become a flag to enable/disable support for virtualthread events, and when disabling support for virtual thread events, the implementation simply takes advantage of it by not doing the unnecessary transitions. DoJVMTIVirtualThreadTransitions was added so profilers could turn it off and not have the overhead of the transitions, which are only executed when JVMTI is enabled. That reasoning in not really captured well in the flag name or its description. I kind of think that just a plain JVMTISupportVirtualThreadEvents flag would be clearer, with a description saying that it eliminates the JVMTI overhead for virtual thread event support. Possibly something to handle in a future cleanup. ------------- Marked as reviewed by cjplummer (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/33001#pullrequestreview-5284019037 PR Review Comment: https://git.openjdk.org/jdk/pull/33001#discussion_r4076713917
