--- sysvinit-2.85/src/init.c.orig 2003-06-16 11:34:41.000000000 -0400 +++ sysvinit-2.85/src/init.c 2003-06-16 14:28:06.000000000 -0400 @@ -701,18 +701,30 @@ { va_list va_alist; char buf[256]; + sigset_t nmask, omask; /* For blocking SIGCHLD */ va_start(va_alist, s); vsnprintf(buf, sizeof(buf), s, va_alist); va_end(va_alist); - + if (loglevel & L_SY) { /* + * Block signals while talking to syslog. + */ + sigfillset(&nmask); + sigprocmask(SIG_BLOCK, &nmask, &omask); + + /* * Re-etablish connection with syslogd every time. */ openlog("init", 0, LOG_DAEMON); syslog(LOG_INFO, "%s", buf); closelog(); + + /* + * Set signal handlers back to original state. + */ + sigprocmask(SIG_SETMASK, &omask, NULL); } /*