JDK-8034801 : AIX: (ch) Fix synchronization issue in AixPollPort.java
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.nio
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: aix
  • Submitted: 2014-02-12
  • Updated: 2014-07-29
  • Resolved: 2014-02-14
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u20Fixed 9 b04Fixed
Description
On AIX we use the AIXPollPort class to wrap the native pollset functionality.

AIXPollPort is based on the Linux EPollPort class. But on AIX there's an extra difficulty - we can not modify (with pollset_ctl()) and query (with pollset_poll()) a pollset concurrently (like this is possible on Linux with epoll_ctl()  and epoll_wait()).

We have therefore synchronized calls to pollset_ctl() and pollset_poll() by using an extra control queue which handles these calls sequentially.

This implementation has an error which can lead to a deadlock if we have a pending pollset_ctl() event in the control queue while the corresponding pollset is already empty.