On Mon, 12 May 2025 09:01:34 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> 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
>
> src/java.base/share/classes/jdk/internal/vm/ThreadContainer.java line 97:
> 
>> 95:     public final void add(Thread thread) {
>> 96:         // Prevent a virtual thread from being preempted as this could 
>> potentially
>> 97:         // deadlock with a carrier is removing a virtual thread from the 
>> container
> 
> Is there a typo in this sentence? Should "with a carrier" have been "when a 
> carrier ..." ? Similar comment in the remove(...) method too.

You are right, there is a pre-existing typo in that comment (the sentence was 
copied to here from RQ).

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23810#discussion_r2084260621

Reply via email to