On Thu, 13 Mar 2025 13:34:51 GMT, Dmitry Chuyko <dchu...@openjdk.org> wrote:

> Please review a tiny fix in the ForkJoinPool. Since JDK 9 (JDK-8134852 [1]) 
> in one case when TC subfield in ctl field is decremented, the applied masking 
> (UMASK, upper bits) may not preserve neighbor RC subfield sometimes. In JDKs 
> prior to 19 FJP may stop executing tasks, which requires a long running 
> application restart [2]. Since 19 it is even harder to reproduce because of 
> the separate parallelism field.
> 
> The fix is to replace 'UMASK & (c - TC_UNIT)'  with '(c & RC_MASK) | ((c - 
> TC_UNIT)  & TC_MASK)' which preserves the RC part of the compareAndSetCtl() 
> candidate argument. On 17u and 11u that repairs known tests and applications. 
> This PR is for the mainline, and I intend to backport it to 21u, 17u and 11u.
> 
> [1] https://bugs.openjdk.org/browse/JDK-8134852
> [2] https://bugs.openjdk.org/browse/JDK-8330017

This pull request has now been integrated.

Changeset: fed34e46
Author:    Dmitry Chuyko <dchu...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/fed34e46b89bc9b0462d9b5f5e5ab5516fe18c6e
Stats:     2 lines in 1 file changed: 1 ins; 0 del; 1 mod

8351933: Inaccurate masking of TC subfield decrement in ForkJoinPool

Reviewed-by: dl, alanb, liach

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

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

Reply via email to