interp-only mechanism fails to work for carrier threads in a corner case

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: P4
    • 27
    • Affects Version/s: 27
    • Component/s: hotspot
    • None

      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 can be 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.

            Assignee:
            Serguei Spitsyn
            Reporter:
            Serguei Spitsyn
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: