NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/47861: NetBSD 6.x syslog bug then using a remote dual stacked syslog receiver



>Number:         47861
>Category:       bin
>Synopsis:       NetBSD 6.x syslog bug then using a remote dual stacked syslog 
>receiver
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon May 27 12:35:00 +0000 2013
>Originator:     Fredrik Pettai
>Release:        NetBSD 6.0.1 (i386)
>Organization:
NORDUnet
>Environment:
NetBSD stats3.nordu.net 6.0.1 NetBSD 6.0.1 (SD_VMT_TWEAK) #1: Wed Dec 26 
21:56:55 CET 2012  
root%stats3.nordu.net@localhost:/usr/obj/sys/arch/i386/compile/SD_VMT_TWEAK i386
>Description:
The syslog daemon on NetBSD 6.x complains with an error message:

Apr  9 14:00:00 stats3 syslogd[11311]: restart
Apr  9 14:00:00 stats3 syslogd[11311]: sendto() failed: Invalid argument

This started to come as our syslog servers became dual stacked (and equally got 
both A + AAAA addresses in its DNS name):

bash-4.2# more /etc/syslog.conf
[?]
*.emerg                                                 *
#*.notice                                               root
*.*     @syslog1.nordu.net

Here is a ktrace:

11311      1 syslogd  CALL  sendto(0xa,0xbb74aec3,0x32,0,0xbb774e10,0x10)
11311      1 syslogd  MISC  msghdr: [name=0xbb774e10, namelen=16, 
iov=0xd89cfc8c, iovlen=1, control=0x0, controllen=133, flags=0]
11311      1 syslogd  MISC  mbsoname: [109.105.113.13]
11311      1 syslogd  RET   sendto -1 errno 22 Invalid argument

he@ did some further debugging:

As far as I can tell, 0x32 is no reason to return EINVAL
according to the rule given in the man page:

    [EINVAL]           The total length of the I/O is more than can be
                       expressed by the ssize_t return value.

Hm, what I do see, though is that it's doing this sequence:

11311      1 syslogd  CALL  sendto(0xa,0xbb74aec3,0x32,0,0xbb74aea0,0x1c)
11311      1 syslogd  MISC  msghdr: [name=0xbb74aea0, namelen=28, 
iov=0xd89cfc8c, iovlen=1, control=0x0, controllen=133, flags=0]
11311      1 syslogd  MISC  mbsoname: [2001:948:4:2::13]
11311      1 syslogd  GIO   fd 10 wrote 50 bytes
      "<46>Apr 10 10:00:00 stats3 syslogd[11311]: restart"
11311      1 syslogd  RET   sendto 50/0x32
11311      1 syslogd  CALL  sendto(0xa,0xbb74aec3,0x32,0,0xbb774e10,0x10)
11311      1 syslogd  MISC  msghdr: [name=0xbb774e10, namelen=16, 
iov=0xd89cfc8c, iovlen=1, control=0x0, controllen=133, flags=0]
11311      1 syslogd  MISC  mbsoname: [109.105.113.13]
11311      1 syslogd  RET   sendto -1 errno 22 Invalid argument

So it's trying to use the same socket for sending both IPv6 and
IPv4 datagrams.  I suspect that doesn't work.
>How-To-Repeat:
* Add a DNS name with both A and AAAA for the (remote) syslog receiver host.
* Add its DNS name in /etc/syslog.conf and restart syslogd.


>Fix:




Home | Main Index | Thread Index | Old Index