On Tuesday 02 March 2010 13:45, Timo Teräs wrote:
> Hi,
> 
> Please revert (or fix) commit cb23d93c6845df3f2733a32caa4194e60ef871a7:       
>     *: add/remove safe_, it seems we had a few incorrect uses
> 
> In addition to change safe_* it also changes the poll revents mask checks 
> incorrectly.
> 
> It can make httpd hang, and busy poll in eternal loop.
> 
> >From manpages:
>        The  field  revents  is an output parameter, filled by the kernel with 
> the events that actually occurred.  The
>        bits returned in revents can include any of those specified in events, 
> or one of the values POLLERR,  POLLHUP,
>        or  POLLNVAL.   (These  three  bits  are meaningless in the events 
> field, and will be set in the revents field
>        whenever the corresponding condition is true.)
> 
> If one gets POLLHUP, it's now never handled in the httpd code, and poll will 
> keep returning it all the time.
> 
> We really need to close fd when we get POLLERR or POLLHUP. Previously it lead 
> to read() or write() which would
> indicate error and lead to clean up. Now those are just ignored.

Like this?

http://busybox.net/downloads/fixes-1.16.0/busybox-1.16.0-POLLHUP.patch

-- 
vda
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to