At Tue, 24 Nov 2009 17:54:45 -0500, Jan Schaumann <jschauma%netmeister.org@localhost> wrote: Subject: Re: chrooted named kills syslogd? > > Matthias Scheler <tron%zhadum.org.uk@localhost> wrote: > > > > On 23 Nov 2009, at 22:58, Jan Schaumann wrote: > > > I have a named running in named_chrootdir="/var/chroot/named"; it > > > appears that if this named is running, syslogd hangs: > > > > It works fine on two systems I look after. Can you describe your > > configuration more precisely, please? What version of NetBSD are you > > using on what platform? > > NetBSD panix.netmeister.org 5.0 NetBSD 5.0 (PANIX-VC) #0: Tue Apr 28 > 20:51:45 EDT 2009 > root%juggler.panix.com@localhost:/misc3/obj/misc2/devel/netbsd/5.0/src/sys/arch/amd64/compile/PANIX-VC > amd64 > > This is a domU. There's nothing out of the ordinary (that I'm aware of) > in this build -- ie, that should be a plain vanilla 5.0 build. The most obvious thing to do would be to find/build the debug version of syslogd corresponding to the version you're having trouble with, and then when it hangs attach to it with GDB and see where it's hung and what state its variables are in. You could try ktrace, but that may be a bit too fine-grained. You could also just try running syslogd in the foreground ("-f"), possibly along with "-d" to enable verbose debugging, and see what it says just before it stops logging. However I note that from a very high-level naive glance at the code that the logerror() function could fail to ever report fatal errors due to its attempt to avoid doing anything if it seems to have been called recursively. This might be mitigated a wee bit for foreground debugging if the following change were applied such that debugging messages can be printed before logmsg() is attempted, which is the culprit which might recursively call logerror() again: Index: usr.sbin/syslogd/syslogd.c =================================================================== RCS file: /cvs/master/m-NetBSD/main/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.84 diff -u -r1.84 syslogd.c --- usr.sbin/syslogd/syslogd.c 13 Nov 2006 20:24:00 -0000 1.84 +++ usr.sbin/syslogd/syslogd.c 25 Nov 2009 20:57:41 -0000 @@ -1586,12 +1586,12 @@ else (void)snprintf(buf, sizeof(buf), "syslogd: %s", tmpbuf); - if (daemonized) - logmsg(LOG_SYSLOG|LOG_ERR, buf, LocalHostName, ADDDATE); if (!daemonized && Debug) dprintf("%s\n", buf); if (!daemonized && !Debug) printf("%s\n", buf); + if (daemonized) + logmsg(LOG_SYSLOG|LOG_ERR, buf, LocalHostName, ADDDATE); logerror_running = 0; } -- Greg A. Woods Planix, Inc. <woods%planix.com@localhost> +1 416 218 0099 http://www.planix.com/
Attachment:
pgpabs7_ZkxLx.pgp
Description: PGP signature