RFR: 8332259: JvmtiTrace::safe_get_thread_name fails if current thread is in native state [v2]

David Holmes dholmes at openjdk.org
Fri May 17 05:55:03 UTC 2024


On Fri, 17 May 2024 02:08:34 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

>> The JvmtiTrace::safe_get_thread_name sometimes crashes when called while current thread is in native thread state.
>> 
>> It happens when thread_name is set for tracing from jvmti functions.
>> See:
>> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/prims/jvmtiEnter.xsl#L649 
>> 
>> The setup is called and the thread name is used in tracing before the thread transition. There is no good location where this method could be called from vm thread_state only. Some functions like raw monitor enter/exit never transition in vm state. So sometimes it is needed to call this function from native thread state.
>> 
>> The change should affect JVMTI trace mode only (-XX:TraceJVMTI). 
>> 
>> Verified by running jvmti/jdi/jdb tests with tracing enabled.
>
> Leonid Mesnik has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
> 
>  - copyrights updated.
>  - Merge branch 'master' of https://github.com/openjdk/jdk into 8332259
>  - include updated.
>  - 8332259

I have to wonder whether this solution will potentially cause problems because the code will now block for safepoints. We could fallback to `Thread::name()` if the current thread is in-native.

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

PR Review: https://git.openjdk.org/jdk/pull/19275#pullrequestreview-2062389545


More information about the serviceability-dev mailing list