**Scenario:** 1. Issue occurs in a muti-threaded environment where SSL socket read() and close() are invoked in parallel. 2. SSL socket read is already called. 2. close() calls waitForCloseNotify() -> decode() ->....-> socketRead0() to read the close_notify acknowledgment. 3. Since there is no synchronization between these read operations, the thread which had already invoked read(), reads the close_notify acknowledgment. 4. The thread (which calls waitForCloseNotify() -> read() ) waits indefinitely in socketRead0() and hangs. 5. Reproduced and tested the fix against a real time MS AD LDAP server.
**Additional details:** 1. The issue occurs in JDK 8u261 and above. 2. JDK 8u251 works fine because it has synchronization along with the state of connection maintained. 3. Mach5 run is green. https://mach5.us.oracle.com/mdash/jobs/pkumaraswamy-jdk-jdk-2-20210317-1430-19174037 ------------- Commit messages: - 8258753: StartTlsResponse.close() hangs due to synchronization issues Changes: https://git.openjdk.java.net/jdk/pull/3068/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3068&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8258753 Stats: 17 lines in 1 file changed: 8 ins; 2 del; 7 mod Patch: https://git.openjdk.java.net/jdk/pull/3068.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/3068/head:pull/3068 PR: https://git.openjdk.java.net/jdk/pull/3068
