Re: Bug in ucspilogd v2.2.0.0

From: Olivier Brunel <jjk_at_jjacky.com>
Date: Sun, 09 Aug 2015 15:20:40 +0200

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
Received on Sun Aug 09 2015 - 13:20:40 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:38:49 UTC