OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
Subject: Re: postfix's incoming smtp hangs randomly
From: Wietse Venema (wietseporcupine.org)
Date: Tue May 02 2000 - 16:42:26 CDT


Erik Forsberg:
> Wietse Venema writes:
> >
> >The fix may be to tweak sigsetmask() arguments so that SIGCHLD
> >properly interrupts select(). Perhaps it helps to turn off the
> >SA_RESTART flag (master/master_select.c). Perhaps that breaks
> >everything.
>
[master is deaf to child exits]
>
> I tried turning off the SA_RESTART flag in master/master_sig.c and it
> seems that solved the problem. There might of course be some unwanted
> side-effects, but I'll monitor the system closely and see if it
> behaves weird.

It may very well spell trouble. The purpose of SA_RESTART is to
resume system calls that can block for an extensive amount of time,
rather than having read() or write() system calls fail randomly
with EINTR. This can be a problem with system calls buried inside
system libraries that I have no control over.

So the problem is that IRIX select() is resumed upon SIGCHLD when
the signal handler has SA_RESTART set.

We had to patch around the same problem with HP-UX. See the #ifdef
USE_SIG_RETURN code in master/master_sig.c. Perhaps a similar
workaround can be found for IRIX.

This is obviously very system dependent, and I have no IRIX machine
to play with, so I am at the mercy of other people to figure out
what code this requires.

        Wietse