With FreeBSD 8.0 it seems like you can't block pending but undelivered signals
Jeremy Allison
jra at samba.org
Tue Jan 8 10:06:00 MST 2013
On Tue, Jan 08, 2013 at 08:51:10AM -0800, Richard Sharpe wrote:
> Hi folks,
>
> I have looked more at the AIO and signal issues I am seeing with
> FreeBSD. This is FreeBSD 8.0.
>
> After instrumenting the code in lib/tevent/tevent_signal.c, I know:
>
> 1. Only one thread, the main thread is receiving signals.
>
> 2. When we hit 64 siginfo_t structures in our array, we try to stop
> the delivery of further signals (signum=68, one of the RT signals
> under FreeBSD.)
>
> 3. They keep coming, overwriting earlier ones and causing replays of
> already handled events.
>
> I will be reading the FreeBSD source code some more today to try to
> figure out what is going on.
>
> The work-around is to change the size of the array for siginfo_t
> structures to 128 from 64 so it is larger than the number of pending
> AIO requests (100).
Are you saying that this code:
sigset_t set;
sigemptyset(&set);
sigaddset(&set, signum);
sigprocmask(SIG_BLOCK, &set, NULL);
fails to block RT signals on FreeBSD ? That would seem
like a horrible *BSD bug (IMHO).
Jeremy.
More information about the samba-technical
mailing list