followup: stuck lmtpd processes

Etienne Goyer etienne.goyer at linuxquebec.com
Thu Sep 25 12:11:34 EDT 2003


On Wed, Sep 24, 2003 at 08:01:11PM +0100, Patrick Welche wrote:
> I don't understand. The only alarm() business I can see in imap/fud.c
> is around recvfrom which at least according to its man page says
> 
>      [EINTR]            The receive was interrupted by delivery of a signal
>                         before any data were available.
> 
> What "system call"s are there? I was looking for syscall()...

Sorry, I may have got the nomenclature wrong since I am not very
familiar with Unix C programming.

However, the man page is wrong about EINTR at least as far as RedHat 7.x
is concerned.  In a murder environnement, when following a referral :

1. The alarm() is set

2. recvfrom() connect to referred by UDP

3. If the referred is not answering :

  3.1 The SIG_ALRM handler is eventually executed

  3.2 fud goes back to waiting after recvfrom and deadlock

This is reproducible in my environment.  Maybe I got something wrong in
my crude syslog() debugging, but I am confident that this is what
happen.  The patch I posted earlier fix the problem for me.

-- 
Etienne Goyer                    Linux Québec Technologies Inc.
http://www.LinuxQuebec.com       etienne.goyer at linuxquebec.com




More information about the Info-cyrus mailing list