On Thu, 11 Aug 2022 16:11:02 GMT, Alan Bateman <al...@openjdk.org> wrote:

> Some blocking operations that pin a virtual thread to its carrier will 
> compensate by activating a spare carrier (essentially managed blocker). This 
> is done by wrapping the operation in a Blocker begin/end. This code is not 
> correct for the case that a spare cannot be activated (e.g. already at the 
> max of 256 carrier threads). When that happens, the carrier thread's 
> "blocking" flag, used to detect reentrancy, is not reset when the blocking 
> operation is done. The result is that subsequent blocking operations by 
> virtual threads on this carrier thread will not attempt to activate a spare.
> 
> The test runs with parallelism=1 and maxPoolSize=2 in order to make it easier 
> to create the conditions for this bug.

This pull request has now been integrated.

Changeset: 68da02c7
Author:    Alan Bateman <al...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/68da02c7b536799ccca49e889c22f3e9a2691fb7
Stats:     154 lines in 2 files changed: 148 ins; 0 del; 6 mod

8292240: CarrierThread.blocking not reset when spare not activated

Reviewed-by: dfuchs

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

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

Reply via email to