[jdk17] RFR: 8269865: Async UL needs to handle ERANGE on exceeding SEM_VALUE_MAX

Xin Liu xliu at openjdk.java.net
Tue Jul 6 06:50:05 UTC 2021


This patch solved the sempahore overflow issue with errno ERANGE or EOVERFLOW.
Previously, we have asymmetric p/v operations for semaphore _sem. Each iteration
only decrements _sem 1 but dequeues N messages. If logging threads keep preempting
async logging thread, it may cause the value of _sem accumulates until overflow! 

The patch corrects the value of _sem after write(). n messages are dequeued/processed.
We need to invoke _sem.wait() max(n-1, 1) time. This ensures that each iteration
decrements n instead of 1.

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

Commit messages:
 - 8269865: Async UL needs to handle ERANGE on exceeding SEM_VALUE_MAX

Changes: https://git.openjdk.java.net/jdk17/pull/216/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=216&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8269865
  Stats: 10 lines in 2 files changed: 7 ins; 0 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk17/pull/216.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/216/head:pull/216

PR: https://git.openjdk.java.net/jdk17/pull/216


More information about the hotspot-runtime-dev mailing list