On Sat, 7 Dec 2024 07:33:07 GMT, Alan Bateman <al...@openjdk.org> wrote:
>> This test fails after >> [JDK-8338713](https://bugs.openjdk.org/browse/JDK-8338713) when using >> JTREG_TEST_THREAD_FACTORY=Virtual. The test uses JVMTI StopThread on a >> thread expecting it to be mounted. Before >> [JDK-8338713](https://bugs.openjdk.org/browse/JDK-8338713) it would be >> mounted because it was blocked on a syncrhonized, which resulted in the >> thread being pinned. After >> [JDK-8338713](https://bugs.openjdk.org/browse/JDK-8338713) this is no longer >> the case and the virtual thread has unmounted. This causes JVMTI StopThread >> to fail with JVMTI_ERROR_OPAQUE_FRAME because it only supports mounted >> virtual threads. >> >> Fixed by using the VThreadPinner class to make sure the virtual threads >> remains pinned, and therefore mounted. >> >> Testing: >> >> - [x] Ran jdb tests locally in both virtual thread mode and platform thread >> mode. >> - [ ] tier1 >> - [ ] tier2 svc >> - [ ] tier5 svc > > test/hotspot/jtreg/vmTestbase/nsk/jdb/kill/kill001/kill001a.java line 166: > >> 164: } >> 165: >> 166: public void run1() { > > It might be a bit clear to rename run1 to runPinned (avoids run and run1). It also needs to support test runs with platforms threads. See how `run()` checks if it is running in virtual thread mode or not. Either way it calls `run()`, but in the virtual thread case it does so using VThreadPinner. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/22620#discussion_r1874356911