id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 8933,on the windows platform async reads with multiple threads can produce random EOF errors,Shane Powell ,chris_kohlhoff,"After upgrading upgrading boost to 1.54.0 I started getting lots of eof errors out of some of my ASIO based applications that didn't make sense. My applications use the single io_service with a thread pool pattern. When the thread pool contains more than one thread I started getting random eof errors whenever the network traffic started to get heavy. Attached is an example program that can reproduce the problem. The application built with boost 1.53.0 works fine. Built with boost 1.54.0 fails. I have tried visual studio version 2008 and 2012 with the same results. To reproduce the problem I use the following parameters with two instances on the same machine: SendReceiveTest.exe server 127.0.0.1 100 1 1000 10 SendReceiveTest.exe client 127.0.0.1 100 2 0 0 The client will error out on the read with a eof error. I tracked the problem back to a posted IO completion event that was generated from a on_pending call. The event gets converted to eof because ::GetLastError always returns '0' and the transferred bytes are always 'zero' from the on_pending call. Looking at the changes between boost asio v1.53.0 and v1.54.0 I spotted in asio\detail\impl\win_iocp_io_service.ipp that some PostQueuedCompletionStatus calls where changed form passing 'overlapped_contains_result' to passing '0'. Changing them back to 'overlapped_contains_result' fixes the problem. ",Bugs,closed,To Be Determined,asio,Boost 1.54.0,Showstopper,fixed,,