Sam Varshavchik wrote > Ángel González writes: > > > Kees Bakker wrote: > > > * maildir/maildirwatch.c (maildirwatch_alloc): Use alarm() to kill > > > the process if FAMOpen() takes more than 15 seconds to return. > > > Should prevent a hung process if FAM/Gamin is fubared. > > > > Seems that a signal(SIGALRM, SIG_IGN); would have been a appropiate. If > > FAMOpen > > failed with EINTR, courier would have been able to continue without dying. > > No. The process is stuck somewhere in the innards of the gamin library. > Something is fundamentally broken with gamin on some Linux distros, but not > on others. Gamin on Fedora is just fine, but, apparently, on Debian and > Debian derivatives it keeps getting hung when opening a domain socket. The > process will hang forever, until something kills it.
My point was that the piece inside fam where it got stuck is a connect(2). A signal(SIGALRM, SIG_IGN);* would make the connect() fail with EINTR, and assuming that fam would return to the caller, that would end up at the if (< 0) path. * Actually, it would be better to use sigaction() in order to ensure it doesn't have SA_RESTART flag (signal(2) may have both behaviors). However, the proposal of printing an error message and exit() may be a better idea. Kees patch looks good to me (although the signum comparison is redundant). ------------------------------------------------------------------------------ Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk _______________________________________________ Courier-imap mailing list Courier-imap@lists.sourceforge.net Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-imap