RFR: 8373118: Test java/lang/Thread/virtual/Starvation.java timed out [v31]

Viktor Klang vklang at openjdk.org
Thu Feb 5 12:20:23 UTC 2026


On Wed, 4 Feb 2026 14:38:03 GMT, Doug Lea <dl at openjdk.org> wrote:

>> Changes signal filtering to avoid possible starvation
>
> Doug Lea 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 43 additional commits since the last revision:
> 
>  - Merge branch 'openjdk:master' into JDK-8373118
>  - reduce interference after stalls
>  - Avoid yield, for performance test
>  - Don't oversignal LIFO
>  - Try out different approach
>  - Simplify scan mode control by moving and reworking topLevelExec and throwing on trim
>  - Another set of contend vs deactivate vs park tradeoffs
>  - Fix missing undo
>  - Merge branch 'openjdk:master' into JDK-8373118
>  - Use explicit store fences or atomics
>  - ... and 33 more: https://git.openjdk.org/jdk/compare/460535d9...7ae93ed7

src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 1988:

> 1986:                                 ran = 1;
> 1987:                                 ++taken;
> 1988:                                 if (propagate && U.getReferenceAcquire(a, np) != null)

At this point, it might even make sense to fold the propagate logic into the if-clause itself. Something like:


                                ran = 1;
                                ++taken;
                                if ((rnt != null) &&
                                    (ps < 0 ||
                                     ((qid & 1) == 0 &&
                                      (fifo != 0 || taken == 1))) && U.getReferenceAcquire(a, np) != null)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28797#discussion_r2768875722


More information about the core-libs-dev mailing list