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


Reply via email to