On Sat, 2 Jul 2022 06:30:13 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> This fixes a bug in the debug agent when there is a request to suspend a 
>> virtual thread that has already terminated. The issue was that unless the 
>> debug agent was currently under a "suspend all", it would not properly put 
>> the virtual thread on the `otherThreads` list, and instead added it to 
>> `runningVThreads`. This meant at the end of `insertThread()` the following 
>> code tried to do a JVMTI `SetThreadLocalStorage`, which can't be done on a 
>> terminated thread.
>> 
>> 
>>         if (list != &otherThreads) {
>>             setThreadLocalStorage(node->thread, (void*)node);
>>         }
>
> Chris Plummer has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Rename thread to targetThread. Verify targetThread state when the thread 
> dies and when the breakpoint after the join() is reached.

Chris,
I see the test SelfSuspendDisablerTest with my update failed in your sanity 
checks.

The problem is:
 ```
71     public static void main(String argv[]) throws Exception {
 72         Thread t1 = Thread.ofPlatform().factory().newThread(() -> {
 73             testJvmtiThreadState(Thread.currentThread(), RUNNABLE);
 74             selfSuspend();                       <== It does a self suspend 
here!!
 75         });
 76         Thread t2 = Thread.ofVirtual().factory().newThread(() -> {
 77             testJvmtiThreadState(Thread.currentThread(), RUNNABLE);
 78             while(!isSuspended(t1)) {
 79               Thread.yield();
 80             }
 81             Thread.yield(); // provoke unmount
 82 
 83             testJvmtiThreadState(t1, SUSPENDED);
 84 
 85             resume(t1);
 86 
 87             testJvmtiThreadState(t1, RUNNABLE);  <== This is wrong because 
of line 74!!
 88 
 89             suspendAllVirtualThreads();
 90         });

The line 87 has to be removed.
Could, you remove the lines 87-88 as part of your PR?
It’d be the simplest way to handle it.

-------------

PR: https://git.openjdk.org/jdk19/pull/88

Reply via email to