Looks like libapparmor 5.0 beta introduced use of the new Linux 6.8 LSM
stacking syscalls, but pipewire-pulse's systemd seccomp filter hasn't
been updated to allow them.

  1. A snap client connects to pipewire-pulse
  2. snap-policy.c calls aa_getcon()
  3. aa_getcon() calls the new aa_get_self_attr@@APPARMOR_5.0
  4. aa_get_self_attr uses pthread_once to lazily initialize the init routine 
calls:
     lsm_get_self_attr(LSM_ATTR_CURRENT=100, ctx, &size, flags=1)
        = syscall(459, 100, ctx_ptr, size_ptr, 1)
  4. This is syscall 459 (__NR_lsm_get_self_attr), a Linux 6.8 addition.
  5. pipewire-pulse.service has SystemCallFilter=@system-service
  6. The @system-service group does not include syscall 459/460/461 (the new 
LSM stacking syscalls added in 6.8)
  7. Seccomp kills the process with SIGSYS right at the syscall instruction, 
before any error-handling code in libapparmor can run

There's some error handling  to catches ENOSYS/EOPNOTSUPP for graceful
fallback, but a SIGSYS kill signal never gets there :(

Installing
[Service]
SystemCallFilter=lsm_get_self_attr lsm_set_self_attr lsm_list_modules

To /etc/systemd/user/pipewire-pulse.service.d/lsm-syscalls.conf and then
running systemctl --user daemon-reload && systemctl --user restart
pipewire-pulse seems to workaround the issue for now

** Also affects: systemd (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: apparmor (Ubuntu)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2142428

Title:
  pipewire-pulse.service crashes with signal=SYS on Ubuntu 26.04
  (Resolute) – No audio, “Not connected to PulseAudio server”

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2142428/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to