syslog-1.4.1-12

Andrzej Augustynowicz andree at pld-linux.org
Fri Sep 24 19:15:04 CEST 2004


Dnia poniedziałek, 20 września 2004 13:26, Tomasz Pala napisał:
> Is broken.
>
> # /etc/rc.d/init.d/syslog restart
> System logger service is not running.
> Starting System logger service.....................................[ FAIL ]
> syslogd: Already running.
> # /etc/rc.d/init.d/syslog status
> syslogd (pid 1300) is running...
> # /etc/rc.d/init.d/syslog stop
> System logger service is not running.
> # /etc/rc.d/init.d/syslog restart
> System logger service is not running.
> Starting System logger service.....................................[ FAIL ]
> syslogd: Already running.
>
> I've traced it to the following:
>
> # killall syslogd
> # syslogd -m 0; echo $?
> zsh: terminated  syslogd -m 0
> 143
> # killall syslogd
> # syslogd -m 0; echo $?
> 0
> # killall syslogd
> # syslogd -m 0; echo $?
> 0
> # killall syslogd
> # syslogd -m 0; echo $?
> 0
> # killall syslogd
> # syslogd -m 0; echo $?
> zsh: terminated  syslogd -m 0
> 143
>
> but I couldn't find the rule. In every case syslogd HAS started.
> strace says:
>
> open("/var/run/syslogd.pid", O_RDONLY)  = -1 ENOENT (No such file or
> directory)
> brk(0x8074000)                          = 0x8074000
> fork()                                  = 1436
> --- SIGTERM (Terminated) @ 0 (0) ---
> +++ killed by SIGTERM +++
>
> for 'broken' start, and:
>
> open("/var/run/syslogd.pid", O_RDONLY)  = -1 ENOENT (No such file or
> directory) brk(0x807c000)                          = 0x807c000
> fork()                                  = 1477
> rt_sigaction(SIGTERM, {0x804bad0, [TERM], SA_RESTORER|SA_RESTART,
> 0x46ef4718}, {SIG_DFL}, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
> rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> nanosleep({300, 0}, 0xbc38ea64)         = -1 EINTR (Interrupted system
> call) --- SIGTERM (Terminated) @ 0 (0) ---
> exit_group(0)                           = ?
>
> for good one. It looks like some race for me.
>
>        -d     Turns on debug mode.  Using this the daemon will not  proceed
>  a fork(2)  to  set  itself in the background, but opposite to that
>
> And with -d always returns 0.
killall syslogd
rm -f /var/run/syslogd.pid
sleep 5s
/etc/init.d/syslog restart

if fixes problem on my system
-- 
Andrzej Augustynowicz
http://ds5.agh.edu.pl




More information about the pld-devel-en mailing list