RFR: 8343177: JFR: Remove critical section for thread id assignment [v3]

Markus Grönlund mgronlun at openjdk.org
Thu Oct 31 12:15:05 UTC 2024


> Greetings,
> 
> With Loom, JFR had to change the assignment of unique thread IDs to threads. For JavaThreads, a dependency exists on the threadObj before the thread ID can be determined and assigned. We currently have a lazy assignment scheme that assigns on first use. Several threads, such as thread iterators and sampling threads, can issue the first use. Hence, a critical section protects assignments.
> 
> However, a critical section at this location makes it challenging to build robust signal handlers, for example, because we cannot read the thread ID.
> 
> We can remove this critical section with careful rearrangements, ensuring threads are only assigned a thread ID in thread state _thread_new (a thread state that at least the JFR sampler and the JFR iterators exclude).
> 
> The problem child is JNI attaching threads, created directly into state _thread_in_vm and added to the threads list before the creation and assignment of the threadObj. We can also manage this case by being careful when we sample such a thread, alternatively allowing for a thread ID of 0 or taking account of the 'attaching via jni' property. 
> 
> Testing: jdk_jfr Tier 1- 3, Stress testing
> 
> Thanks
> Markus

Markus Grönlund has updated the pull request incrementally with one additional commit since the last revision:

  rename primordial to main thread

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21756/files
  - new: https://git.openjdk.org/jdk/pull/21756/files/c73725b1..6053116e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21756&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21756&range=01-02

  Stats: 7 lines in 5 files changed: 0 ins; 0 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/21756.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21756/head:pull/21756

PR: https://git.openjdk.org/jdk/pull/21756


More information about the hotspot-jfr-dev mailing list