On Thu, 4 Jan 2024 12:53:07 GMT, Alan Bateman <al...@openjdk.org> wrote:
>> -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 the 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. An alternative to not printing traces would of >> course be to queue the traces so they are printed by another thread but this >> is just adding complexity for a debugging option that we want to go away. > > Alan Bateman 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 three additional > commits since the last revision: > > - Expand TracePinnedThreads.testContention test description > - Merge > - Initial commit Marked as reviewed by jpai (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/17221#pullrequestreview-1804149476