With FreeBSD 8.0 it seems like you can't block pending but undelivered signals

Richard Sharpe realrichardsharpe at gmail.com
Tue Jan 8 09:51:10 MST 2013


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).

-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)


More information about the samba-technical mailing list