Ok - well, it only took me 7 months, but that strace was enough to get my brain churning. Currently (master and 3.3 series), if we read a partial header, we don't immediately return to the poll loop. Instead, we try to read again - *into the data buffer*. Then, when we return again to the handler, pieces of the data buffer are read into the remaining bytes of the header. This race condition is relatively rare (one-in-a-thousand or one-in-a-hundred ReadV) because we must both fragment the header *and* a packet has to arrive between two back-to-back calls to ReadAsync. However, this happens frequently enough that about 10% of our jobs die due to it when using the new client. The fix is straightforward - see pull request #108 . This should also be backported to the stable branch; you really want to do this before the new client is used in a ROOT release. --- Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/issues/45#issuecomment-41290559 ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1