On Thu, 22 May 2025 11:58:37 GMT, David Holmes <dhol...@openjdk.org> wrote:
> To me, in the pinned case, both threads are "really waiting". The carrier > physically and the vthread "logically". This also indicates it is actually > doing pinning. The intended mental model has always been that the carrier is waiting for the virtual thread. The virtual thread may be blocked and waiting for something else of course. This is why, for example, ThreadMXBean and ThreadInfo::getLockedMonitors() with the ID of carrier report the identity hash of the virtual thread when there is a virtual thread mounted. There is some outstanding work on the thread state reported for carriers but once that is done then it will be much clearer. There are changes in the loom repo to allow preemption when waiting for a class to be initialized. In that case, the virtual thread will unmount so it won't appear in the HotSpot VM thread dump. However, if pinned, then it will appear and we will get the same confusing output. So I think we should fix it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25367#issuecomment-2901014409