On Tue, 15 Sep 2026 04:53:52 GMT, David Holmes <[email protected]> wrote:
> Can you clarify please when/where the old `is_vthread_mounted()` would > change, compared to where the value of `vthread()` changes in > `VirtualThread::mount/unmount`. I'm concerned the time windows for these two > methods of detecting a mounted virtual thread may differ in a detectable way. > For printing it likely does not matter but for the snapshot are we satisfied > that both queries would always return near-enough the same result (naturally > they must differ in the case where the existing check would crash). > On mount, `vthread()` changes in `setCurrentThread`, right before calling `enterSpecial` which mounts the continuation (sets `_cont_entry`). At unmount we unmount the continuation first (unset `_cont_entry`) and then change `vthread()` back in `setCurrentThread`. This API only works for platform threads, but it doesn’t execute a handshake against the target, so the old `is_vthread_mounted` to check if there is a mounted vthread is unsafe and can crash. We still have the issue where the information reported might not be consistent, that’s why ideally this should use a handshake. ------------- PR Comment: https://git.openjdk.org/jdk/pull/32788#issuecomment-5682261656
