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

Reply via email to