Bugzilla – Bug 3083
writes allowed to be registered after an error
Last modified: 2005-08-17 09:18:12
You need to log in before you can comment on or make changes to this bug.
Currently writes are allowed to be registered after a read returns an error. This causes user level hangs.
Created an attachment (id=562) [details] test program This test program shows the bug.
The specific reason for the hang is that an 'EPIPE' write event appears to be consumed. So, the first write to get that error will be the last. Any attempts to select for more write events after that will hang, as select will never signal another write event. This is now fixed in cvs.
A similar problem exists when a connect is reset on the read. Subsequent attempts to select for write will never succeed. This test case: globus-start-container globusrun -submit -F http://localhost:8443 -c /bin/date seems to cause this to occur fairly reliably (trying to speak http to an https server)
An initial fix for this was committed shortly after april 8th and should be in 4.0.1. It still contains a small race, however. A complete fix for this was committed to the trunk towards the end of may. I may have deemed it too intrusive at the time for release to a stable branch. This was before the onslaught of changes added to that branch. Mike Link or Joe Bester should determine whether people are still affected by this bug and whether it's worth it to back port the changes in globus_xio_driver_tcp.c and release an update package to xio.