RFR: 8320652: ThreadInfo.isInNative needs to be updated to say what executing native code means [v2]

David Holmes dholmes at openjdk.org
Wed Nov 29 06:48:03 UTC 2023


On Tue, 28 Nov 2023 16:59:53 GMT, Bernd <duke at openjdk.org> wrote:

>>> btw for the following (system/native/runtime/embryotic) Reader thread tseems to be no java method marked "native" on the stack, what case is that?
>>> 
>>> ```
>>> "JDWP Event Helper Thread" #22 daemon prio=10 os_prio=0 cpu=0.00ms elapsed=65.02s tid=0x000001fc4f7e9970 nid=0x32e0 runnable  [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>> 
>>> "JDWP Command Reader" #23 daemon prio=10 os_prio=0 cpu=0.00ms elapsed=65.02s tid=0x000001fc4f7ea480 nid=0x69c4 runnable  [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>> 
>> The debugger uses JVMTI RunAgentThread to create its own threads. These threads are partly hidden, at least from some APIs.  However, I think your comment does bring up the question of threads that don't have any Java frames, as in JNI attached threads that haven't called into Java code. This method has never specified that case, need to think we should try to specify it now.
>
> Well.. it has to do in so far, that those threads are not hidden - the ThreadInfo sees it and says "isNative". But ok if this is not expected, then indeed it does not need to be documented.

> seems to be no java method marked "native" on the stack, what case is that?

A native thread that is attached to the VM but is not currently executing any Java code.

> funfact: its not in the list

JDWP filters its own internal threads out of any thread lists it returns, so this may be a case of using two different API's with different views of the set of threads running.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16791#discussion_r1408818581


More information about the serviceability-dev mailing list