Specifying SIG_IGN for SIGCHLD (which by default, is ignored) is not the same as specifying SIG_DFL. See the NOTES section of wait(2) for the skinny on this. --- Linux-PAM-0.77/modules/pam_pwdb/support.-c 2003-07-09 00:15:06.000000000 -0400 +++ Linux-PAM-0.77/modules/pam_pwdb/support.-c 2003-07-09 00:15:19.000000000 -0400 @@ -370,7 +370,7 @@ * The "noreap" module argument is provided so that the admin can * override this behavior. */ - sighandler = signal(SIGCHLD, SIG_IGN); + sighandler = signal(SIGCHLD, SIG_DFL); } /* fork */ --- Linux-PAM-0.77/modules/pam_unix/support.c 2003-07-09 00:15:29.000000000 -0400 +++ Linux-PAM-0.77/modules/pam_unix/support.c 2003-07-09 00:15:41.000000000 -0400 @@ -597,7 +597,7 @@ * The "noreap" module argument is provided so that the admin can * override this behavior. */ - sighandler = signal(SIGCHLD, SIG_IGN); + sighandler = signal(SIGCHLD, SIG_DFL); } /* fork */