Potential lost write IO notifications in Windows when using virtual threads
Alan Bateman
alan.bateman at oracle.com
Wed Feb 11 16:27:14 UTC 2026
On 11/02/2026 16:00, Matthew Swift wrote:
> Hi,
>
> I suspect that I've discovered a bug in the IO polling mechanism used
> by virtual threads on Windows. I've been able to systematically
> reproduce the problem on Windows 2016, 2019 and 2022 Intel x64 using
> both JDK 25.0.2 and 25.0.3 EA build 01, and also JDK 27 EA 8 build.
> The problem occurs when the server attempts to send a large response
> message to the client. The server's write operation becomes blocked
> and is never notified when the socket becomes writable again:
Can you determine if a blocking read outstanding on the same connection
that another thread is blocked on the large write? Can you set SO_SNDBUF
to a large value to see if that reduces or eliminates the sightings?
We have been chasing an issue in the Windows Ancillary Function Driver
for winsock that arises when a Windows SOCKET is use with two different
completion ports or AFD device handles at the same time. Daniel Jeliński
has some good analysis here:
https://github.com/piscisaureus/wepoll/issues/35
We have a prototype poller implementation that works around this issue
but it has some performance impact (on Windows) so have been slow to
process it [1].
-Alan
[1] https://bugs.openjdk.org/browse/JDK-8334574
More information about the loom-dev
mailing list