"invalid argument" error from logger command when passing messages via STDIN
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
util-linux (Ubuntu) |
Triaged
|
Medium
|
Unassigned |
Bug Description
Steps to reproduce:
apt-get install lxd-installer
lxd init
lxc launch ubuntu:jammy ct0
lxc exec ct0 -- bash
Then within the container run
echo foo | logger --id="$$"
Note: the command may work the first time, but subsequent invocations then produced the error described in my bug report.
(original report follows)
-----
When invoking the `logger` command on Ubuntu Jammy (bsdutils 2.37.2) with explicit PID and passing messages via STDIN
```
echo "some message" | logger -p local0.info --id="$$"
```
the command produces the following error instead of sending the message to syslog:
> logger: send message failed: Invalid argument
The error does not appear when the message is passed as an argument:
```
logger -p local0.info --id="$$" "some message" # this works!
```
When using process substitution the error only appears for the first log message:
```
exec > >(logger -p local0.info --id="$$")
echo "first message" # throws error, message not logged
echo "second message" # no error, message logged correctly
```
The issue does not exist in older versions (e.g. Ubuntu Xenial, bsdutils 2.27.1).
Workaround: Omit `--id` and include the PID in a tag.
```
echo "some message" | logger -p local0.info -t "foo[$$]"
```
Expected Behavior
-----------------
All messages passed via STDIN should be sent to syslog without throwing an error.
OS Release
----------
Description: Ubuntu 22.04 LTS
Release: 22.04
Package Version
---------------
bsdutils:
Installed: 2.37.2-4ubuntu3
Candidate: 2.37.2-4ubuntu3
description: | updated |
Changed in util-linux (Ubuntu): | |
status: | Incomplete → Triaged |
importance: | Undecided → Medium |
description: | updated |
I cannot reproduce this on jammy.
$ echo "some message" | logger -p auth.info --id="$$"
$ echo $?
0
$
(using auth.info instead of local0.info because I have the former logged to a log file and the latter not).