diff -urN autofs-0.3.13/.version autofs-0.3.14-pre1/.version --- autofs-0.3.13/.version Wed Sep 17 18:21:36 1997 +++ autofs-0.3.14-pre1/.version Thu Sep 18 21:48:12 1997 @@ -1 +1 @@ -0.3.13 +0.3.14 diff -urN autofs-0.3.13/NEWS autofs-0.3.14-pre1/NEWS --- autofs-0.3.13/NEWS Wed Sep 17 18:21:36 1997 +++ autofs-0.3.14-pre1/NEWS Thu Sep 18 21:48:12 1997 @@ -1,9 +1,12 @@ +Since autofs-0.3.13: +-------------------- + Since autofs-0.3.12: -------------------- * Added -p, --pid-file option to daemon. * Fixed aestetic bug in new spawn() logic. * Added new cleanup_exit() function in the daemon. -* Added signal handling to some cases that was improperly ignored. +* Added signal handling to some cases that were improperly dealt with. * Integrated new sample stuff from Miquel van Smoorenburg and Christoph Lameter. diff -urN autofs-0.3.13/daemon/automount.c autofs-0.3.14-pre1/daemon/automount.c --- autofs-0.3.13/daemon/automount.c Wed Sep 17 18:21:36 1997 +++ autofs-0.3.14-pre1/daemon/automount.c Thu Sep 18 21:48:12 1997 @@ -335,7 +335,7 @@ struct autofs_packet_missing pkt; struct stat st; sigset_t allsignals, oldsig, chldsig; - pid_t f; + pid_t f, wp; if (get_pkt(ap.pipefd, &pkt)) return -1; @@ -380,7 +380,7 @@ /* Wait for go-ahead from main process. Fortunately signals sent by a process to itself are synchronous events per POSIX.1 */ - kill(getpid(), SIGSTOP); + kill(getpid(), SIGTSTP); /* SIGSTOP here makes strace miserable */ i = ap.lookup->lookup_mount(ap.path,pkt.name,pkt.len,ap.lookup->context); _exit(i ? 1 : 0); } else { @@ -393,8 +393,10 @@ mt->wait_queue_token = pkt.wait_queue_token; mt->next = ap.mounts; ap.mounts = mt; - if ( waitpid(f, &status, WUNTRACED) != f || - !WIFSTOPPED(status) ) { + if ( (wp = waitpid(f, &status, WUNTRACED)) != f + || !WIFSTOPPED(status) ) { + syslog(LOG_ERR, "INTERNAL ERROR: waitpid(%d) = %d, status = 0x%04x", + f, wp, status); sigprocmask(SIG_UNBLOCK, &chldsig, NULL); send_fail(pkt.wait_queue_token); return 1; @@ -646,7 +648,7 @@ sigaction(SIGINT, &sa, NULL); sigaction(SIGQUIT, &sa, NULL); sigaction(SIGILL, &sa, NULL); - sigaction(SIGTRAP, &sa, NULL); + /* sigaction(SIGTRAP, &sa, NULL); */ sigaction(SIGABRT, &sa, NULL); sigaction(SIGIOT, &sa, NULL); sigaction(SIGBUS, &sa, NULL);