-Djdk.tracePinnedThreads is a debugging option that dates from early 
development in the loom repo to identify pinned threads. It has several issues 
and this tracing option will eventually be removed (use JFR events instead). 
Several hangs have been reported when running with the system property set. The 
"hangs" stem from the onPinned callback executing while the virtual thread is 
in a transition state (typically parking). If the virtual parks while printing 
the stack trace then it works like a nested park where the thread state is 
never restored. Contention on the System.out can also lead to deadlock when 
there are platform and pinned virtual threads printing to System.out around the 
same time.

This PR brings over the changes from the loom repo to avoid these hangs. The 
changes mean the stack trace is only printed to System.out when the PrintStream 
lock can be acquired without blocking. It also restores the thread state after 
printing.

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

Commit messages:
 - Initial commit

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

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

Reply via email to