The `SuspendResumeManager::suspend(bool register_vthread_SR)` has an issue while suspend current virtual thread. The suspend tries to access vthread oop field to read vthread id after thread is blocked.
Seems, that this case is not used by our debugger and was not covered by tests. I found it using jtreg test thread virtual factory plugin. I updated existing test to reproduce this problem. The easiest way is to suspend current virtual thread using plain SuspendThread. The fix added some "asymmetry" in suspend/resume mechanism which is required because self-suspend doesn't have resume counterpart. ------------- Commit messages: - 8367725: Incorrect reading of oop in SuspendResumeManager::suspend while thread is blocked Changes: https://git.openjdk.org/jdk/pull/27317/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27317&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8367725 Stats: 50 lines in 5 files changed: 36 ins; 8 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/27317.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27317/head:pull/27317 PR: https://git.openjdk.org/jdk/pull/27317
