On 08/09/15 10:44, Laurent Bercot wrote: > The path leading to the first invocation of readv() hasn't changed, > but readv() gives different results. My first suspicion is that "logger" > isn't sending the last character (newline or \0) in the second case > before exiting, which skagetlnsep() interprets as "I was unable to > read a full line before EOF happened" and reports as EPIPE. > Are you using the same version of "logger" on both machines ? > > Grrr. If "logger" starts sending incomplete lines, I may have to change > the ucspilogd code to accommodate it.
Had a quick look at this (procrastination & stuff :p) and it seems to me this is probably a bug in logger actually. At some point[1] they started not to use syslog(3) anymore but implementing things on their own instead. However, there's a difference with glibc's implementation, specifically when using a SOCK_STREAM the later adds a NUL byte as record terminator, which the former does not. Hence there's never a terminating NUL byte from logger anymore and ucspilogd fails w/ EPIPE. HTH, -j [1] https://github.com/karelzak/util-linux/commit/1d57503378bdcd838365d625f6d2d0a09da9c29d