Cyrus Deadblocking

Adam Tauno Williams adam at morrison-ind.com
Wed Dec 24 09:39:46 EST 2008


On Tue, 2008-12-23 at 02:44 +0100, Teresa wrote:
> Adam Tauno Williams wrote:
> >> Does "dmesg" show anything odd?
> Another thing i get sometimes connecting hanging cyrus process with 
> strace is a lot of :
> select(0, NULL, NULL, NULL, {0, 25000}) = 0 (Timeout)
> few per second, and it never ends...

This above should be pretty normal.  Select polls for any I/O, times out
(because there is nothing to do), and then the process re-issues the
select.  Many services/servers use such a method to handle async I/O.

I'd guess the above is a call to:
       int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);
 - so the last value, the {0, 25000} is the timeout timeval struct -

struct timeval
  {
    __time_t tv_sec;            /* Seconds.  */
    __suseconds_t tv_usec;      /* Microseconds.  */
  };

 - so you get one of the select(...) calls roughly every 25,000
microseconds since.




More information about the Info-cyrus mailing list