I'm pretty sure this bug is caused by this issue:
https://github.com/util-linux/util-linux/issues/2336

TLDR: when using the --id=NNN parameter, logger sends random UID and GID
along with the PID you specify on the command line.

Those UID/GID probably don't exist on your machine/container and you are
probably using some LSM module (like AppArmor, SELinux, etc) that checks
the validity of the credentials sent through the sendmsg() syscall and
thus denies the call with EINVAL.

You might want to test the patch I posted on github.

** Bug watch added: github.com/util-linux/util-linux/issues #2336
   https://github.com/util-linux/util-linux/issues/2336

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to util-linux in Ubuntu.
https://bugs.launchpad.net/bugs/1991436

Title:
  "invalid argument" error from logger command when passing messages via
  STDIN

Status in util-linux package in Ubuntu:
  Triaged

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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/1991436/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to