On Tue, 18 Nov 2025 04:59:56 GMT, Chris Plummer <[email protected]> wrote:

>> src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c line 1399:
>> 
>>> 1397:     if (node == NULL) {
>>> 1398:         node = findThread(&otherThreads, thread);
>>> 1399:     }
>> 
>> Q: Could you explain a little bit why this change is needed? Do we need an 
>> update of the comment above?
>
> You need to call findRunningThread() to get the ThreadNode created if there 
> isn't already one. findThread() does not create the ThreadNode like 
> findRunningThread() does, so after my changes to free up ThreadNodes, 
> findThread() was returning NULL, which causes a lot of problems here.
> 
> You then need to add the findThread(&otherThreads, thread) call because this 
> is normally done by findThread() but is purposefully not done by 
> findRunningThread(). otherThreads hold threads that have been created but not 
> yet started. It's kind of rare that threads every end up on the list. It 
> means the debugger somehow got hold of a ThreadReferences (such as through a 
> local var) and then called a ThreadReference API with it. The usual way it 
> works is when an event finally comes in on the thread, that is when it gets 
> moved from otherThreads to runningThreads or runningVThreads.

Okay, thanks! It would be nice to add a short comment with a couple of 
sentences to explain this.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28211#discussion_r2544734427

Reply via email to