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

Reply via email to