RFR: 8373367: interp-only mechanism fails to work for carrier threads in a corner case [v2]
David Holmes
dholmes at openjdk.org
Fri Jan 30 00:00:52 UTC 2026
On Thu, 29 Jan 2026 09:23:41 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:
>> The `interp-only` mechanism is based on the `JavaThread` objects. Carrier and virtual threads can temporary share the same `JavaThread`. The `java_thread->jvmti_thread_state()` is re-linked to a virtual thread at `mount` and to the carrier thread at `unmount`. The `JvmtiThreadState` has a back link to the `JavaThread` which is also set for virtual thread at a `mount` and carrier thread at an `unmount`. Just one of these two links at the same time is set to the `JavaThread`, the other one has to be set to `nullptr`. The `interp-only` mechanism needs this invariant.
>> However, there is a corner case when this invariant is broken. It happens when the `JvmtiThreadState` for carrier thread has just been created. In such case, the link to `JavaThread` is always `non-nullptr` even though a virtual thread is currently mounted on a carrier thread. This simple update fixes the issue in the `JvmtiThreadState` ctor.
>>
>> Testing:
>> - TBD: Mach5 tiers 1-6
>
> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
>
> review: some tweaks for carrier thread JvmtiThreadState initialization
src/hotspot/share/prims/jvmtiThreadState.cpp line 61:
> 59:
> 60: if (JvmtiEnvBase::is_thread_carrying_vthread(thread, thread_oop)) {
> 61: // Carrier and virtual threads can temporary share the same JavaThread.
Suggestion:
// Carrier and virtual threads can temporarily share the same JavaThread.
src/hotspot/share/prims/jvmtiThreadState.cpp line 65:
> 63: // It is needed for interp-only mechanism.
> 64: _thread = nullptr;
> 65: _thread_saved = thread;
The meaning of these variables is not described here or in the header file. That makes it hard to assess the correctness based on the comments.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/29436#discussion_r2744014657
PR Review Comment: https://git.openjdk.org/jdk/pull/29436#discussion_r2744018321
More information about the hotspot-dev
mailing list