[Date Prev][Date Next] [Chronological] [Thread] [Top]

signal() behavior

I've noticed an annoying behavior in the alpha slapd on Linux: If the daemon
is running in the background, it appears to ignore SIGTERM. What has
actually happened is that the daemon is in select(), and the select call has
been restarted after the signal handler was invoked. I.e., the default
behavior on Linux for signal() is to restart system calls - it uses the
default BSD semantics. Anyone testing on Solaris or other SVR4-derived OSs
will not see this problem, because SysV signal() does not restart system
calls by default.

The solution seems to be to check for sigaction() in configure, and use it
instead of signal() if it's found. I'll make this fix in a little while.