[systemd-devel] stdout-syslog-bridge max line length issue

Albert Strasheim fullung at gmail.com
Fri Sep 16 22:15:46 PDT 2011


Hello all

We've run into a problem with stdout-syslog-bridge with systemd v35 on F16.

Our application logged some very long lines as part of debug output,
which filled up the stream buffer for the app.

http://cgit.freedesktop.org/systemd/tree/src/stdout-syslog-bridge.c#n91

I think LINE_MAX is 2048.

At

http://cgit.freedesktop.org/systemd/tree/src/stdout-syslog-bridge.c#n350

this caused a read system call with a 0 length. l=0, so stream_process
returned 0.

This is considered an error condition and

http://cgit.freedesktop.org/systemd/tree/src/stdout-syslog-bridge.c#n609

closed the stream.

The system calls around this time:

read(19, "a very long string here"..., 1261) = 1261
epoll_wait(5, {{EPOLLIN, {u32=7778096, u64=7778096}}}, 1, 4294967295) = 1
read(19, "", 0)                   = 0
epoll_ctl(5, EPOLL_CTL_DEL, 19, NULL) = 0
close(19)                         = 0

Luckily our logging code checks for error returns from its printing
code, so we picked up the error.

Other applications that don't do this might cause this condition after
which their logs will start disappearing.

What's the way forward on this one?

Regards

Albert


More information about the systemd-devel mailing list