I'm using dovecot 1.0.alpha4 on a freebsd 5.3 i386 system. Dovecot is configured to use mysql authentication and I'm running mysql 5.0.15 . Everything works fine, but after a period of inactivity (20-30 minutes ) when I connect and try to authenticate it just hangs. I noticed that the dovecot-auth worker process is not running anymore... from looking at the source code I understand that the dovecot-auth worker process is actually a client that connects to the main dovecot-auth process ( the server)
I restarted dovecot and I straced the auth worker process ... after 20-30 minutes it just existed here is the output of strace :
gettimeofday({0, 0}, NULL) = 0 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 2, 0) = 0 gettimeofday({1133138508, 221796}, {0, 0}) = 0 gettimeofday({0, 0}, NULL) = 0 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL, revents=POLLIN}], 2, 1999) = 1 gettimeofday({1133138509, 49095}, {0, 0}) = 0 read(4, "", 478) = 0 close(4) = 0 fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 read(7, "", 8192) = 0 fcntl(7, F_SETFL, O_RDWR) = 0 write(7, "\1\0\0\0\1", 5) = -1 EPIPE (Broken pipe) shutdown(7, 2 /* send and receive */) = 0 close(7) = 0 close(3) = 0 close(5) = 0 close(6) = 0 close(-1) = -1 EBADF (Bad file descriptor) exit(0) = ?
Why is the auth worker exiting if it reads 0 from fd=4 ? is it possible to make it so that it does not exit ? and in the case it exits is there a mechanism to restart it? Another question would be why read(4, "", 478) returns 0 ? this means that the server closed connection right ? why would the auth server close the connection with the auth worker ?
I had a similar problem with dovecot 0.99 but there I got a "login failed" error message immediately , with 1.0alpha4 it just hangs. I also used a nightly cvs snapshot and the problem is there too.
Thank you for your time
Mihai Secasiu http://denixsolutions.com/