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