Greetings,

Explicitly pin a virtual thread before acquiring the JFR string pool monitor 
because migrating a carrier thread local event writer object onto another 
carrier thread is impossible.

During event commit, the thread is in a critical section because it has loaded 
a carrier thread local event writer object. For virtual threads, a contended 
monitor, such as a synchronized block, is a point where a thread could become 
unmounted.

A monitor guards the JFR string pool, but remounting a virtual thread onto 
another carrier is impossible because of the event writer.

Therefore, it's imperative to use explicit pin constructs to prevent unmounting 
at this location. 

Testing: jdk_jfr

Thanks
Markus

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

Commit messages:
 - 8338417

Changes: https://git.openjdk.org/jdk/pull/20588/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20588&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8338417
  Stats: 173 lines in 3 files changed: 149 ins; 8 del; 16 mod
  Patch: https://git.openjdk.org/jdk/pull/20588.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20588/head:pull/20588

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

Reply via email to