Red Hat Bugzilla – Bug 172098
lio_listio(LIO_WAIT) does not return -1 if one of requests fails
Last modified: 2007-11-30 17:11:16 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050923 Fedora/1.7.12-1.5.1
Description of problem:
If li_listio() is called with LIO_WAIT then it should return -1 in the case of failure any of posted requests. However it does not.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Create TCP connection between entities A and B.
2. Send bulk of data from A.
3. Post read request on A using lio_listio(LIO_WAIT).
4. Kill process corresponding to B (TCP RST should appear in tcpdump).
5. lio_listio() unblocks.
6. Call aio_error() for read request - it returns ECONNRESET.
Actual Results: lio_listio() returns 0.
Expected Results: lio_listio() should return -1 and set errno to EIO.
Your test case and usage of aio is wrong. I told you numerous times that aio
does not support socket operations.
Having said that, there is a valid test case which shows that there is a bug.
I've fixed it in the upstream glibc. The next rawhide build will likely have it.