Data structures that are accessed by both virtual threads and their carriers 
require the virtual thread to pin the continuation to avoid potential deadlock. 
A deadlock can arise when a virtual thread is preempted, is selected and 
scheduled to be the next owner of the lock/resource, but can't execute because 
all carriers are blocking on the same lock/resource. There are a small number 
of places that need to pin. One that was missed is the the notification to the 
thread container when threads are started or terminate. This is not currently 
an issue at this time but it is a potential hazard for ongoing and future work 
that will add further scheduling points to the code.  Continuation.pin/unpin 
have intrinsics since JDK-8338745, and Continuation is initialized early in 
startup. Finally, the changes have been in the loom repo for several months 
with no issues.

Testing tier1-5, quick statup/footprint, noreg-hard

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

Commit messages:
 - No need to used qualified name
 - Merge branch 'master' into JDK-8350765
 - Update
 - Merge branch 'master' into JDK-8350765
 - Add method to ContinuationSupport
 - Missing /
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/23810/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23810&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8350765
  Stats: 92 lines in 6 files changed: 48 ins; 25 del; 19 mod
  Patch: https://git.openjdk.org/jdk/pull/23810.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23810/head:pull/23810

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

Reply via email to