RFR: 8323782: Race: Thread::interrupt vs. AbstractInterruptibleChannel.begin
Richard Reingruber
rrich at openjdk.org
Wed Jan 17 09:37:20 UTC 2024
Set `interrupted` in `Thread::interrupt` before reading `nioBlocker` for correct (Dekker scheme) synchronization with concurrent execution of [`AbstractInterruptibleChannel::begin`](https://github.com/openjdk/jdk/blob/59062402b9c5ed5612a13c1c40eb22cf1b97c41a/src/java.base/share/classes/java/nio/channels/spi/AbstractInterruptibleChannel.java#L176).
The change passed our CI functional testing: JTReg tests: tier1-4 of hotspot and jdk. All of Langtools and jaxp. SPECjvm2008, SPECjbb2015, Renaissance Suite, and SAP specific tests.
Testing was done with fastdebug and release builds on the main platforms and also on Linux/PPC64le and AIX.
-------------
Commit messages:
- New version of LotsOfInterrupts.java supporting virtual threads
- Add Alan's LotsOfInterrupts.java test
- Must checkAccess before changing interrupt state of other thread
- 8323782: Race: Thread::interrupt vs. AbstractInterruptibleChannel.begin
Changes: https://git.openjdk.org/jdk/pull/17444/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17444&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8323782
Stats: 101 lines in 2 files changed: 95 ins; 5 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/17444.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/17444/head:pull/17444
PR: https://git.openjdk.org/jdk/pull/17444
More information about the core-libs-dev
mailing list