> 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
Markus Grönlund 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: - Merge branch 'openjdk:master' into 8338417 - update test comment - hoist pinVirtualThread - 8338417 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/20588/files - new: https://git.openjdk.org/jdk/pull/20588/files/b96b411f..2cf0c2cb Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=20588&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20588&range=02-03 Stats: 13476 lines in 362 files changed: 8560 ins; 3146 del; 1770 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