pipewire-jack: Pipewire seizes when audio device is disconnected
-
PipeWire version (
pipewire --version
):
Compiled with libpipewire 0.3.84
Linked with libpipewire 0.3.84
$ paru -Q | grep pipewire
lib32-libpipewire 1:0.3.84-1
lib32-pipewire 1:0.3.84-1
lib32-pipewire-jack 1:0.3.84-1
libpipewire 1:0.3.84-1
pipewire 1:0.3.84-1
pipewire-alsa 1:0.3.84-1
pipewire-audio 1:0.3.84-1
pipewire-jack 1:0.3.84-1
pipewire-pulse 1:0.3.84-1
...
wireplumber 0.4.15-1
-
Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
):
NAME="Arch Linux",
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
-
Desktop Environment:
N/A
(X11
+picom
+i3-wm 4.23-1
) -
Kernel version (
uname -r
):6.5.9-zen2-1-zen
Description of Problem:
After updating, when disconnecting Headphones from AUX Port or USB Audio Device, Pipewire and all applications must restart before audio can resume. Subsequent updates have not resolved the issue.
$ systemctl status --user pipewire
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; preset: enabled)
Active: active (running) since Sat 2023-11-04 15:06:22 CDT; 15min ago
TriggeredBy: ● pipewire.socket
Main PID: 589851 (pipewire)
Tasks: 3 (limit: 38371)
Memory: 8.6M
CPU: 1.583s
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─589851 /usr/bin/pipewire
Nov 04 15:06:22 HOSTNAME systemd[1538]: Started PipeWire Multimedia Service.
Nov 04 15:11:55 HOSTNAME pipewire[589851]: spa.alsa: front:0p: snd_pcm_drop: No such device
Nov 04 15:11:55 HOSTNAME pipewire[589851]: spa.alsa: front:0p: close failed: No such device
How Reproducible:
This happens every time without fail. This is reproducible on all machines I've tested with the latest version of pipewire.
Steps to Reproduce:
- Ensure all audio devices are connected and services are running
- Use
pw-jack
to open eitherqjackctl
orpatchmatrix
(reproduced with both, and a couple others) - Begin playing audio from an application (Spotify, browser, etc...)
- Ensure that the application is being routed to multiple sinks
- While audio is still playing, disconnect an audio device
Actual Results:
All audio output on the machine ceases and cannot resume without restarting pipewire.service
and any applications attempting to output audio.
Expected Results:
Audio will continue playing on devices that are still connected and actively outputting audio, as in previous versions.
Odd Workaround:
The following will NOT cause the issue to be reproduced. All steps are required, oddly enough:
- Default Sink is changed to a device that isn't going to get unplugged
- Old Default Sink is disconnected while audio is playing on New Default Sink
- Old Default Sink is reconnected while audio is playing on New Default Sink
- ONLY THEN is
pw-jack
opened - From then on, disconnecting the Old Default Sink will not cause audio to stop working on New Default Sink
- At this point, the Default Sink can even be changed back to the Old Default Sink and the issue will no longer happen
Additional Info (as attachments):
-
pw-dump > pw-dump.log
: pw_dump.log
systemctl status --user 'pipewire*'
$ systemctl status --user 'pipewire*'
● pipewire.socket - PipeWire Multimedia System Sockets
Loaded: loaded (/usr/lib/systemd/user/pipewire.socket; enabled; preset: enabled)
Active: active (running) since Tue 2023-10-31 02:35:39 CDT; 4 days ago
Triggers: ● pipewire.service
Listen: /run/user/1000/pipewire-0 (Stream)
/run/user/1000/pipewire-0-manager (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire.socket
Oct 31 02:35:39 HOSTNAME systemd[1538]: Listening on PipeWire Multimedia System Sockets.
● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; disabled; preset: enabled)
Active: active (running) since Tue 2023-10-31 02:35:54 CDT; 4 days ago
TriggeredBy: ● pipewire-pulse.socket
Main PID: 2388 (pipewire-pulse)
Tasks: 3 (limit: 38371)
Memory: 62.6M
CPU: 8min 37.347s
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
└─2388 /usr/bin/pipewire-pulse
Oct 31 02:35:54 HOSTNAME systemd[1538]: Started PipeWire PulseAudio.
● pipewire-pulse.socket - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.socket; enabled; preset: enabled)
Active: active (running) since Tue 2023-10-31 02:35:39 CDT; 4 days ago
Triggers: ● pipewire-pulse.service
Listen: /run/user/1000/pulse/native (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.socket
Oct 31 02:35:39 HOSTNAME systemd[1538]: Listening on PipeWire PulseAudio.
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; preset: enabled)
Active: active (running) since Sat 2023-11-04 15:06:22 CDT; 20min ago
TriggeredBy: ● pipewire.socket
Main PID: 589851 (pipewire)
Tasks: 3 (limit: 38371)
Memory: 8.6M
CPU: 1.583s
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─589851 /usr/bin/pipewire
Nov 04 15:06:22 HOSTNAME systemd[1538]: Started PipeWire Multimedia Service.
Nov 04 15:11:55 HOSTNAME pipewire[589851]: spa.alsa: front:0p: snd_pcm_drop: No such device
Nov 04 15:11:55 HOSTNAME pipewire[589851]: spa.alsa: front:0p: close failed: No such device