Date: Tue, 1 Jun 2004 14:33:35 +0200 (CEST) From: Markus Wild <mw@kpnqwest.ch> To: freebsd-current@freebsd.org Subject: Problem with syslogd Message-ID: <200406011233.i51CXZeo037506@smsgw.vianetworks.ch>
next in thread | raw e-mail | index | archive | help
Hi there, I'm frequently seeing a problem with syslogd aborting, with a gdb trace indicating it's trying to free() content out of the reapchild() function, with the signal having interrupted another malloc/free type function call. I was able to keep the effects of this in bay by blocking SIGCHLD in logmsg() and validate(), but I might not have caught all possible cases yet. Looking at the code, is it such a great idea to call a non-reentrant allocation function (free()) from a signal handler? reapchild() calls deadq_remove(), which by itself calls free(). IMHO this should be moved out of the signal handler, or am I missing something? If you want to provoke the bug, have a "|" command in your syslog.conf with a command that frequently terminates, and feed it a lot of messages.... Cheers, Markus
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406011233.i51CXZeo037506>