On Sat, Jun 14, 2008 at 11:24:43PM +0200, Ruediger Pluem wrote:
> So the code before said that if port_getn returns -1 (== fails) we return 
> APR_TIMEUP
> if the error is ETIME or EINTR and APR_EGENERAL.
> So IMHO the error message (in this IMHO the same) would have been shown with 
> the old
> code.
> What is more strange to me is that we get a timeout error ((70007)The timeout 
> specified has
> expired: apr_pollset_poll:) even thought we called apr_pollset_poll with -1 
> as timeout which
> means wait indefinitely or no timeout. The implementation of apr_pollset_poll 
> seems to be
> correct as it ensures that we supply NULL in this case to port_getn. But OTOH 
> the man page
> for port_get / port_getn documents timeout behaviour only for port_get 
> (setting timeout parameter
> to null means not timeout) not for port_getn. So couldn't this be a Solaris 
> bug?

It may be working as designed - this code path gets trigged when all the 
fds in the pollset get closed asynchronously; see PR 42829 and the 
thread concerning that bug on this list.

If it is working as designed it is arguably more useful than the epoll 
behaviour in the same case; at least, it's more useful for httpd.  
AFAICT the only effect of this to prefork is to generate some error_log 
spam; could be ignored easily enough.

The APR change r641661 certainly looks correct anyway.

joe

Reply via email to