From: Jon B. <Jon...@eu...> - 2001-09-13 12:12:25
|
Sometime syslogd dies on bootup with an error (also mentioned on the UML kernel help page). Starting system log daemon: syslogd/etc/rc2.d/S10sysklogd: line 49: 69 Terminated start-stop-daemon --start --quiet --exec /sbin/syslogd -- $SYSLOGD Syslogd forks off a child and then sends a SIGTERM to the parent. Normally the parent catches this signal and uses it to clean up gracefully. In syslogd.c the parent signal handler is not installed until after the child is forked so there is a window of opportunity for the child to send the signal before the handler is installed and this causes the error. The patch below is against sysklogd-1.4.1 and fixes the problem for me by installing the handler before the fork. Jon Burgess --- syslogd.c~ Sun Mar 11 19:40:10 2001 +++ syslogd.c Thu Sep 6 11:16:37 2001 @@ -890,11 +890,11 @@ dprintf("Checking pidfile.\n"); if (!check_pid(PidFile)) { + signal (SIGTERM, doexit); if (fork()) { /* * Parent process */ - signal (SIGTERM, doexit); sleep(300); /* * Not reached unless something major went wrong. 5 |