[systemd-devel] Reason for IgnoreSIGPIPE=true by default
Ansgar Burchardt
ansgar at debian.org
Fri Jul 25 11:22:54 PDT 2014
Hi,
I'm wondering what the reason for IgnoreSIGPIPE to default to true is.
The documentation just states that
Defaults to true because SIGPIPE generally is useful only in shell
pipelines.
But I don't think that this alone is a good reason to change the default.
It can confuse programs which use pipes and do not expect their signal
handlers to be messed with, see [1] for the same issue in Python. As
another example, "tar xf *.tar.gz" will fail on some archives if SIGPIPE
is ignored[2].
Another problem is that this not only affects the program started by
systemd itself, but leaks into all child processes as well. See [3] for
a bug report against cron due to this (yes, can be worked around by
setting IgnoreSIGPIPE=false for cron.service, but I believe systemd is
wrong here).
Ansgar
[1] <http://bugs.python.org/issue1652>
[2] I think the .gz needs trailing zeros in either the compressed or
uncompressed data stream. I could look at the file it failed
with...
[3] <https://bugs.debian.org/756047>
More information about the systemd-devel
mailing list