My machine is a RedHat 7.0 server install, updated with many Rawhide components (all recompiled). Under kernel 2.4 (.0-ac1, .0-0.43.11) syslogd (1.3.33-8) stalls during bootup (but continues eventualy). This is rectified by installing a newer initscripts (5.53-1). Should this be listed as a 'requires' somewhere? Or are the newer initscripts masking other behaviour?
You wouldn't happen to be using NIS, would you?
Yep
Thanks for the hint: I looked into my /etc/nsswitch.conf, and found what I had not expected: hosts: files nisplus nis dns so I changed it to what I had expected (and used elsewhere, I use NIS for sharing password files, I don't need it to do what DNS does better) hosts: files dns [NOTFOUND=return] nisplus nis I think this is related to my bug 23459, as previous to this the nisdomainname was set in rc.sysint, now its set in init.d/ypbind - after syslog starts. (Is this what you were thinking?)
BTW, I don't keep host info in my /etc/hosts file, only: 127.0.0.1 localhost so thats why syslog does the DNS (and failed NIS) lookup
OK. The 2.4 kernel has a different behavior on unconnected UDP sockets; before it would return 'connection refused', which wasn't technically correct. What happens is that glibc sees that you have a NIS domain name set, so it tries to talk to portmap; portmap isn't listening, so it sits there waiting for a response. (with 2.2 it would get the 'connection refused' error.) The reason it doesn't hang with the new initscripts is that the new initscripts don't set the NIS domain name at boot up; they leave it for the ypbind init script to set. It's not something that sysklogd really needs to require the new initscripts for. I'll assign this to glibc, as that's the place the behavior needs to change (basically, there is some new socket error reporting mechanism that it can use.)
Should be fixed in glibc-2.2-12.