https://bugs.kde.org/show_bug.cgi?id=527744

Sergey Kostrukov <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #3 from Sergey Kostrukov <[email protected]> ---
I can reproduce this on Arch Linux (Elisa 26.08.2, libvlc 3.0.24, PipeWire
1.6.10, alsa-lib 1.2.16.1, Plasma 6.8.1). Elisa freezes consistently when
switching to the next track. It started right after PipeWire was upgraded from
1.6.9 to 1.6.10.

The hang seems to be in PipeWire's ALSA plugin rather than in Elisa. Elisa
(libvlc) was using VLC's ALSA output, which goes through the pipewire-alsa
plugin. A stack of the hung process shows a chain of waits:

- main thread: libvlc_media_player_stop -> input_Close (joins the input thread)
- input thread: input_DecoderDelete (joins the decoder thread)
- decoder thread: aout_DecFlush -> VLC alsa.c Flush(wait=true) -> snd_pcm_drain
-> snd_pcm_ioplug_drain -> snd_pcm_pipewire_drain (pcm_pipewire.c:502), which
waits forever in pw_thread_loop_wait

This matches PipeWire issue #5544, "ALSA PipeWire plugin: aplay hangs
indefinitely during drain after XRUN":
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/5544
PipeWire 1.6.10 includes commit a2672a3f "alsa-plugin: use
snd_pcm_ioplug_set_state to set XRUN". That commit can move the PCM from
DRAINING to XRUN while it drains, so the plugin's drain never completes. The
same hang happens without Elisa: "aplay -D pipewire <short wav>" never exits.

Workaround: install VLC's PulseAudio output plugin (vlc-plugin-pulse on Arch).
libvlc then prefers it over ALSA and talks to pipewire-pulse directly. With it
installed, Elisa switches tracks normally for me.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to