Re: SIGCHLD in pam_unix.so

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 04, 2004 at 06:35:17PM +0200, Johannes Wei??l wrote:
> It seems that passing SIG_IGN to SIGCHLD in
> modules/pam_unix/support.c line 456 prevents invoking the
> helper binary from working - strace cut-out:
[...]
> rt_sigaction(SIGCHLD, {SIG_IGN}, {SIG_DFL}, 8) = 0

FWIW, in pam_tcb, we're setting SIGCHLD to SIG_DFL and not to SIG_IGN
for the execution of the helper binary and it works OK.

Setting SIGCHLD to SIG_IGN should be avoided because AFAIR it's
invalid per POSIX and might enable the following different behavior
for waitpid() per SUSv3:

| If the calling process has SA_NOCLDWAIT set or has
| SIGCHLD set to SIG_IGN, and the process has no unwaited-for children
| that were transformed into zombie processes, the calling thread shall
| block until all of the children of the process containing the calling
| thread terminate, and wait() and waitpid() shall fail and set errno to
| ECHILD.

As the default for SIGCHLD is to ignore the signal, SIG_DFL should be
used instead of SIG_IGN to avoid any surprises.

-- 
/sd


_______________________________________________

Pam-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/pam-list

[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux