Another showstopper in 2.2.5

Richard Bollinger rabollinger at attbi.com
Wed Aug 21 11:18:00 GMT 2002


Hmmm... reading the man page for sigaction()... the semantics are a bit unclear regarding sa_mask:

      sa_mask  gives  a  mask of signals which should be blocked
       during execution of the signal handler.  In addition,  the
       signal which triggered the handler will be blocked, unless
       the SA_NODEFER or SA_NOMASK flags are used.

So... for example, if the mask indicated only that we wanted to block SIGQUIT, for example, could
the signal handler being registered be hit by SIGPIPE while it is running?  That being the case,
would we need to specify a mask which includes at least everything we've decided to IGNORE?

----- Original Message -----
From: <jra at dp.samba.org>
To: "Fredrik Ohrn" <ohrn at chl.chalmers.se>
Cc: "Richard Bollinger" <rabollinger at attbi.com>; <David.Collier-Brown at Sun.COM>;
<samba-technical at samba.org>
Sent: Wednesday, August 21, 2002 9:58 AM
Subject: Re: Another showstopper in 2.2.5


> On Wed, Aug 21, 2002 at 07:40:04PM +0200, Fredrik Ohrn wrote:
> >
> > OK, I've tried it out and it didn't help.
> >
> > I removed my BlockSignals stuff and added ZERO_STRUCT(act) instead, now
> > the smbd dies on SIGPIPE just as before.
>
> Ok, we need to know when SIGPIPE is being removed from the blocked
> signal set on your system.
>
> Can you add some code in the main loop that prints out the current
> signal mask using this code:
>
> sigset_t blocked_mask = siggetmask();
> DEBUG(0,"SIGPIPE is %s\n", sigismember(&blocked_mask, SIGPIPE) ? "blocked" : "nonblocked" ));
>
> So we can see when the SIGPIPE is being removed from your
> masked set.
>
> Thanks,
>
> Jeremy.
>




More information about the samba-technical mailing list