Pulseaudio 在 Arch 上损坏:pa_stream_writable_size() 失败:连接终止

Pulseaudio 在 Arch 上损坏:pa_stream_writable_size() 失败:连接终止

问题

在尝试修复一个小问题在我的 Arch 系统上,我似乎创建了一个更大的系统。我真的不知道我做了什么导致了这个(稍后会详细介绍),但每当我尝试使用它时,pulseaudio 似乎都会崩溃。

如果我尝试播放 mp3 文件克莱门汀,我得到:

pa_stream_writable_size() failed: Connection terminated

Vlc 似乎正在播放,但没有声音输出,我在启动它的终端窗口上收到以下错误消息流:

[0000000001e24418] pulse audio output error: unknown latency: Bad state
[0000000001e24418] pulse audio output error: cannot write: Bad state
[0000000001e24418] pulse audio output error: unknown latency: Bad state
[0000000001e24418] pulse audio output error: cannot write: Bad state

我在网上发现的类似问题似乎有涉及删除gstreamer.我宁愿不这样做,因为有很多软件包依赖于它,包括 Cinnamon,我的 DE。我也不明白这怎么可能是问题,因为声音很好,直到我开始摆弄它。

我运行的唯一可能影响此问题的命令是我尝试将板载声卡添加到由pulseaudio检测到的卡列表中。可悲的是,我的机器同时崩溃了,我不得不进行硬重启,所以我丢失了我运行的确切命令,但它的内容大致如下:

pactl load-module module-alsa-card device_id="0" name="pci-0000_00_05.0" card_name="alsa_card.pci-0000_00_05.0" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes

我猜测我在那里使用了错误的参数,并添加了同一张卡两次,或者其中一张卡的名称错误或类似。


可能相关的信息

$ pactl list short cards
0   alsa_card.pci-0000_00_1b.0  module-alsa-card.c
1   alsa_card.pci-0000_03_00.0  module-alsa-card.c

当我尝试运行时pavucontrol,我会看到我的声卡,它立即被替换为:

Establishing connection to pulseaudio server, please wait` 

然后是卡片,然后是消息等等。这会重复几十次,直到稳定下来:

连接到pulseaudio失败

尝试start-pulseaudio-x11手动运行也失败:

$ start-pulseaudio-x11 
Connection failure: Connection refused
pa_context_connect() failed: Connection refused

我的/etc/pulse/client.conf文件是(标题已删除):

; default-sink =
; default-source =
; default-server =
; default-dbus-server =

autospawn = no
; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no

我尝试删除相关包:

sudo pacman -Rdd pavucontrol pulseaudio pulseaudio-alsa lib32-libpulse libcanberra-pulse 

然后重新安装它们:

sudo pacman -S pavucontrol pulseaudio pulseaudio-alsa lib32-libpulse libcanberra-pulse

但这没有什么区别。我还能尝试什么?理想情况下,我怎样才能将pulseaudio重置到昨天我破坏它之前的状态?如果问题确实是我的pactl命令破坏了它,我该如何撤消该命令?

答案1

在@Takkat 的帮助下,我通过重命名pulseaudio配置目录的简单方法设法解决了这个问题:

mv ~/.config/pulse ~/.config/pulse.old

之后就pavucontrol可以正常启动了。我不知道该目录中的哪个文件把事情搞砸了。如果这对任何人都有帮助,那么它的内容如下:

$ ls .config/pulse.old/
cookie                                              e9ec65fd88a04300a02d204ca1e6ff58-default-source
e9ec65fd88a04300a02d204ca1e6ff58-card-database.tdb  e9ec65fd88a04300a02d204ca1e6ff58-device-volumes.tdb
e9ec65fd88a04300a02d204ca1e6ff58-default-sink       e9ec65fd88a04300a02d204ca1e6ff58-stream-volumes.tdb

相关内容