[Pkg-utopia-maintainers] Bug#1050498: pipewire-pulse systemd service not restarted despite dpkg upgrade of all pipewire packages

bouddebbug at cosmo.torun.pl bouddebbug at cosmo.torun.pl
Fri Aug 25 11:57:46 BST 2023


Package: pipewire-pulse
Version: 0.3.78-1
Severity: normal

Dear pipewire maintainers,


    * What led up to the situation?

I'm trying to getting Mobian Pinephone (PP) audio phone calls to fully
work (person on remote phone hears me and I hear the person on the
remote phone). See
https://salsa.debian.org/Mobian-team/packages/alsa-ucm-conf/-/issues/8
https://salsa.debian.org/Mobian-team/packages/alsa-ucm-conf/-/issues/9
for details.

A bug related to callaudiod in pipewire-0.3.77 was reported to be fixed
in 0.3.78: https://gitlab.com/mobian1/callaudiod/-/issues/30 .

I had pipewire 0.3.77-1 from Mobian/Debian/trixie installed.



    * What exactly did you do (or not do) that was effective (or
      ineffective)?

I compiled pipewire 0.3.78-1 from Debian (salsa) source with
    'fakeroot debian/rules binary'
after applying the two patches in debian/patches/ .

I installed all the newly compiled *.deb files that matched names that I already had
from 0.3.77-1, using  dpkg -i *.deb. More specifically, I did:

    'for i in gstreamer1.0-pipewire_0.3.78-1_arm64.deb libpipewire-0.3-0_0.3.78-1_arm64.deb libpipewire-0.3-modules_0.3.78-1_arm64.deb libspa-0.2-bluetooth_0.3.78-1_arm64.deb libspa-0.2-jack_0.3.78-1_arm64.deb libspa-0.2-libcamera_0.3.78-1_arm64.deb libspa-0.2-modules_0.3.78-1_arm64.deb pipewire_0.3.78-1_arm64.deb pipewire-alsa_0.3.78-1_arm64.deb pipewire-audio_0.3.78-1_all.deb pipewire-audio-client-libraries_0.3.78-1_all.deb pipewire-bin_0.3.78-1_arm64.deb pipewire-jack_0.3.78-1_arm64.deb pipewire-pulse_0.3.78-1_arm64.deb; do sudo dpkg -i ${i}; done'

four times, as a brute force alternative to working out in which order the
packages depended on each other. The first three times each reported missing
dependencies, but fewer each time. The fourth iteration appeared to be error-free.

I checked that the apt system was clean with
   dpkg --audit
which gave an empty response.

I restarted pipewire (several times).



    * What was the outcome of this action?

Some phone calls worked :). And some phone calls failed :(.

More specifically, after analysing and tidying log files for my main bug,
I found that the old /usr/bin/pipewire-pulse (0.3.77-1) is still running.
The output of 'pw-dump' shows that there is a mix of 0.3.78-1 and 0.3.77-1
running in parallel. I've kept this situation for the purposes of reporting
this bug, but I'll kill off the old pipewire-pulse process after filing the bug
report.


    * What outcome did you expect instead?

What I expected was that the dpkg/apt system and/or the systemd system
should have recognised that the old 'pipewire-pulse' process was invalid
and should have forced it to restart with the 0.3.78-1 version.


SUGGESTED SOLUTIONS:

(1) dpkg or the debian/control or other debian/* file - if pipewire
is re-installed and pipewire-pulse is present, then pipewire-pulse
must not only be updated to the same version, but any processes
actually running must be restarted too. This depends on whether the
debian/* files force restarting of the systemd services or not.
If the services are restarted, then it seems to me that pipewire-pulse
must be restarted along with pipewire (if pipewire-pulse is installed).

(2) systemd alone - if (i) the pipewire-pulse service exists, and (ii)
pipewire is restarted, then (iii) pipewire-pulse must be restarted. I
can only make an educated guess as to what the systemd rules for this
should be. My guess is:

/lib/systemd/user/pipewire.service
PropagatesStopTo=pipewire-pulse

/lib/systemd/user/pipewire-pulse.service
StopPropagatedFrom=pipewire

since a 'restart' is presumably a stop and a start. There doesn't
seem to be a pair  PropagatesRestartTo and RestartPropagatesTo.


COMMENT: If upstream has a separate 'pipewire-pulse' package, then
this issue should presumably be also fixed upstream.


DIAGNOSTICS:

$ dpkg -l |grep pipewire
ii  gstreamer1.0-pipewire:arm64           0.3.78-1                             arm64        GStreamer 1.0 plugin for the PipeWire multimedia server
ii  libpipewire-0.3-0:arm64               0.3.78-1                             arm64        libraries for the PipeWire multimedia server
ii  libpipewire-0.3-modules:arm64         0.3.78-1                             arm64        libraries for the PipeWire multimedia server - modules
ii  pipewire:arm64                        0.3.78-1                             arm64        audio and video processing engine multimedia server
ii  pipewire-alsa:arm64                   0.3.78-1                             arm64        PipeWire ALSA plugin
ii  pipewire-audio                        0.3.78-1                             all          recommended set of PipeWire packages for a standard audio desktop use
ii  pipewire-audio-client-libraries       0.3.78-1                             all          transitional package for pipewire-alsa and pipewire-jack
ii  pipewire-bin                          0.3.78-1                             arm64        PipeWire multimedia server - programs
ii  pipewire-jack:arm64                   0.3.78-1                             arm64        PipeWire JACK plugin
ii  pipewire-pulse                        0.3.78-1                             arm64        PipeWire PulseAudio daemon


$ ls -l /usr/bin/pipewire-pulse /usr/share/pipewire/pipewire-pulse.conf
lrwxrwxrwx 1 root root    8 Aug 22 13:51 /usr/bin/pipewire-pulse -> pipewire
-rw-r--r-- 1 root root 5990 Aug 22 13:51 /usr/share/pipewire/pipewire-pulse.conf


$ head /usr/share/pipewire/pipewire-pulse.conf
# PulseAudio config file for PipeWire version "0.3.78" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
#

$ ls ~/.config/pipewire*
ls: cannot access '/home/mobian/.config/pipewire*': No such file or directory


[+58%]@mobian:~$ systemctl --user status pipewire
● pipewire.service - PipeWire Multimedia Service
      Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
      Active: active (running) since Fri 2023-08-25 10:42:20 CEST; 1h 28min ago
TriggeredBy: ● pipewire.socket
    Main PID: 84989 (pipewire)
       Tasks: 3 (limit: 3167)
      Memory: 4.4M
         CPU: 248ms
      CGroup: /user.slice/user-1000.slice/user at 1000.service/session.slice/pipewire.service
              └─84989 /usr/bin/pipewire

Aug 25 10:42:20 mobian systemd[774]: Started pipewire.service - PipeWire Multimedia Service.

[+58%]@mobian:~$ systemctl --user status pipewire-pulse
● pipewire-pulse.service - PipeWire PulseAudio
      Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
      Active: active (running) since Tue 2023-08-22 13:47:08 CEST; 2 days ago
TriggeredBy: ● pipewire-pulse.socket
    Main PID: 853 (pipewire-pulse)
       Tasks: 3 (limit: 3167)
      Memory: 13.9M
         CPU: 25.507s
      CGroup: /user.slice/user-1000.slice/user at 1000.service/session.slice/pipewire-pulse.service
              └─853 /usr/bin/pipewire-pulse

Aug 22 13:47:08 mobian systemd[774]: Started pipewire-pulse.service - PipeWire PulseAudio.


$ ps -A uf |grep "/usr.*pipewire" |grep -v grep
mobian       853  0.0  0.6 110704 19028 ?        S<sl Aug22   0:25  \_ /usr/bin/pipewire-pulse
mobian     84989  0.0  0.3 110120 11404 ?        S<sl 10:42   0:00  \_ /usr/bin/pipewire


$ pw-dump |grep -B2 "0\.3\.[0-9]*"
       "user-name": "mobian",
       "host-name": "mobian",
       "version": "0.3.78",
  --
         "module.name": "libpipewire-module-rt",
         "module.usage": "( nice.level=<priority: default 20(don't change)> ) ( rt.prio=<priority: default 88> ) ( rt.time.soft=<in usec: default -1> ) ( rt.time.hard=<in usec: default -1> ) ( rlimits.enabled=<default true> ) ( rtportal.enabled=<default true> ) ( rtkit.enabled=<default true> ) ",
         "module.version": "0.3.78",
  --
         "module.description": "Native protocol using unix sockets",
         "module.name": "libpipewire-module-protocol-native",
         "module.version": "0.3.78",
  --
         "module.description": "Generate Profiling data",
         "module.name": "libpipewire-module-profiler",
         "module.version": "0.3.78",
  --
         "module.description": "Allow clients to create metadata store",
         "module.name": "libpipewire-module-metadata",
         "module.version": "0.3.78",
  --
         "module.description": "Provide a factory to make SPA devices",
         "module.name": "libpipewire-module-spa-device-factory",
         "module.version": "0.3.78",
  --
         "module.description": "Provide a factory to make SPA nodes",
         "module.name": "libpipewire-module-spa-node-factory",
         "module.version": "0.3.78",
  --
         "module.description": "Allow clients to create and control remote nodes",
         "module.name": "libpipewire-module-client-node",
         "module.version": "0.3.78",
  --
         "module.description": "Allow clients to create and control remote devices",
         "module.name": "libpipewire-module-client-device",
         "module.version": "0.3.78",
  --
         "module.name": "libpipewire-module-access",
         "module.usage": "( access.force=flatpak ) ( access.allowed= [ <cmd-line>,.. ] ) ( access.rejected= [ <cmd-line>,.. ] ) ( access.restricted= [ <cmd-line>,.. ] ) ",
         "module.version": "0.3.78",
  --
         "module.description": "Manage adapter nodes",
         "module.name": "libpipewire-module-adapter",
         "module.version": "0.3.78",
  --
         "module.name": "libpipewire-module-link-factory",
         "module.usage": "( allow.link.passive=<bool, default false> ) ",
         "module.version": "0.3.78",
  --
         "module.description": "Implements objects for session management",
         "module.name": "libpipewire-module-session-manager",
         "module.version": "0.3.78",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "clock.power-of-two-quantum": true,
         "core.name": "pipewire-mobian-1685",
         "core.version": "0.3.77",
  --
         "config.name": "/usr/share/wireplumber/wireplumber.conf",
         "core.name": "pipewire-mobian-84995",
         "core.version": "0.3.78",
  --
         "config.name": "/usr/share/wireplumber/wireplumber.conf",
         "core.name": "pipewire-mobian-84995",
         "core.version": "0.3.78",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "config.name": "pipewire-pulse.conf",
         "core.name": "pipewire-mobian-853",
         "core.version": "0.3.77",
  --
         "clock.power-of-two-quantum": true,
         "core.name": "pipewire-mobian-87647",
         "core.version": "0.3.78",



-- System Information:
Debian Release: trixie/sid
   APT prefers testing
   APT policy: (500, 'testing')
Architecture: arm64 (aarch64)

Kernel: Linux 6.1-sunxi64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_CRAP, TAINT_UNSIGNED_MODULE
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages pipewire-pulse depends on:
ii  init-system-helpers  1.65.2
ii  pipewire             0.3.78-1

Versions of packages pipewire-pulse recommends:
ii  wireplumber  0.4.14-4

Versions of packages pipewire-pulse suggests:
ii  libspa-0.2-bluetooth  0.3.78-1
ii  pulseaudio-utils      16.1+dfsg1-2+b1

-- no debconf information


Cheers
Boud


More information about the Pkg-utopia-maintainers mailing list