Como evitar que o Pulseaudio trave quando inicio uma máquina virtual no VirtualBox?

1

/! \ Update 2 Below - Pulseaudio não é o culpado, libpam-systemd faz /! \

Tenho notado que toda vez que eu inicio uma máquina virtual do VirtualBox usando gksu virtualbox %U , o Pulseaudio sempre falha. Eu imediatamente tenho esse erro do VirtualBox:

No audio devices could be opened. Selecting the NULL audio backend
with the consequence that no sound is audible.

e

HostAudioNotResponding

Além disso, o VMware Workstation informa que não é possível obter som, pois esse erro gerou:

Cannot find /dev/dsp.

O que é verdade, já que nem consigo encontrar esse arquivo.

No entanto, o syslog não diz muito sobre o acidente:

May 31 18:18:58 HostName pulseaudio[3466]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:58 HostName pulseaudio[3466]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:58 HostName pulseaudio[3466]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3471]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3471]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3471]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3473]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3473]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3473]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3475]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3475]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3475]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3478]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3478]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3478]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:00 HostName pulseaudio[3483]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:00 HostName pulseaudio[3483]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:00 HostName pulseaudio[3483]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:09 HostName pulseaudio[3488]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:09 HostName pulseaudio[3488]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:09 HostName pulseaudio[3488]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:09 HostName pulseaudio[3490]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:09 HostName pulseaudio[3490]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:09 HostName pulseaudio[3490]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:17 HostName pulseaudio[3496]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:17 HostName pulseaudio[3496]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:17 HostName pulseaudio[3496]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:18 HostName pulseaudio[3498]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:18 HostName pulseaudio[3498]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:18 HostName pulseaudio[3498]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:20:28 HostName pulseaudio[1847]: [pulseaudio] protocol-native.c: Denied access to client with invalid authorization data.

Desde que ele só diz que o Pulseaudio não pode ser reiniciado desde que o /run/user/1000/pulse/ tenha recebido o infame bug de ser possuído pelo root. Que eu simplesmente consertei com:

chown standardUser /run/user/1000/pulse/ && chgrp standardUser /run/user/1000/pulse/

Mas, ainda assim, não há sinal do que poderia ter feito a queda do Pulseaudio.

Então a pergunta é: o que está causando o travamento do Pulseaudio e como evitá-lo?

Tudo foi feito em um Debian 8.7 atualizado com o ambiente de área de trabalho do KDE.

Atualização 1 :

Depois de muitas tentativas e adivinhações, obtive algumas melhorias editando o arquivo /etc/pluse/default.pa.

Ao ativar esses módulos Pulseaudio: - módulo-alsa-pia - module-oss device="/ dev / dsp" nome_do_punho = saída nome_da_origem = entrada

Ativando module-oss com essas opções, ativa o arquivo / dev / dsp; e impede que o VMware Workstation ative seu erro.

Fazendo um modeprobe de: snd-pcm-oss

E desativando esses módulos:

  • module-esound-protocol-unix
  • module-suspend-on-idle

Não há quase nenhum bug (ainda tenho o VirtualBox e a infame pasta de pulsos pertencentes ao root), exceto este que eu recebo do syslog:

May 31 22:09:11 HostName pulseaudio[3376]: Trying resume...
May 31 22:09:11 HostName pulseaudio[3376]: open '/dev/snd/pcmC0D0p' failed (-16)
May 31 22:09:11 HostName pulseaudio[3376]: Error opening PCM device front:0: Device or resource busy
May 31 22:09:11 HostName pulseaudio[3376]: Using generic matrix remapping

E este desde que iniciei manualmente o Pulseaudio fazendo "pulseaudio -vvvv":

I: [pulseaudio] client.c: Created 1 "Native client (UNIX socket client)"
D: [pulseaudio] protocol-native.c: Protocol version: remote 29, local 29
I: [pulseaudio] protocol-native.c: Got credentials: uid=0 gid=0 success=0
W: [pulseaudio] protocol-native.c: Denied access to client with invalid authorization data.
I: [pulseaudio] client.c: Freed 1 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Connection died.

Ainda assim, eu não consigo entender porque o erro "/ dev / snd / pcmC0D0p" vem, e porque é aparentemente um problema de permissão.

Além do syslog e da execução do Pulseaudio com o modo ultra detalhado, não sei como acompanhar o que está acontecendo com o Pulseaudio.

Existe alguma maneira de fornecer mais informações sobre essa falha?

Atualização 2

Além do que fiz na Atualização 1:

/etc/pulse/default.pa foi adicionado:

module-native-protocol-unix auth-anonymous=1
module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

/etc/pulse/client.conf foi adicionado:

default-server = 127.0.0.1

modprobe snd-pcm-oss ainda é necessário.

Tudo relacionado ao Pulseaudio funcionou, mesmo vmware não reclamou sobre não receber / dev / dsp (só funciona com modprobe snd-pcm-oss ). Nenhum erro foi encontrado por Pulseaudio -vvvv ou / var / log / syslog /.

Infelizmente, ainda falta som enquanto o Pulseaudio está funcionando perfeitamente.

Além disso, também tentei executar o Pulseaudio no modo de sistema; mas as coisas não melhoraram e o problema era o mesmo.

Então, parecia que o principal problema era sobre / run / user / 1000 / pulse ser possuído por root, e significa que o problema real é aquele bug infame.

Depois de algumas pesquisas, descobri que a libpam-systemd está causando isso. Este é um bug conhecido que o Debian obteve do Systemd, que foi reportado para o Debian Testing (Stretch) e Experimental; mas não estável em tudo:

link

link

link

Com relação ao segundo link, também confirmo o problema "gksu gedit", que também apliquei a mesma solução alternativa.

O problema parece não ser resolvido, pelo menos até que os mantenedores do Debian Stable atualizem a libpam-systemd.

Por outro lado, enviei um relatório de bug para eles. Além disso, eu recomendo que as pessoas que enfrentam esse bug também relatem esse bug novamente, para que possam obter uma confirmação verdadeira.

Além disso, se alguém souber como corrigir esse bug enquanto isso, eu ficaria feliz em ouvir qualquer solução. Isso também inclui a recompilação de libpam-systemd como deb (desde que eu não sei como fazê-lo corretamente, da maneira Debian), qualquer sugestão é bem-vinda.

    
por X.LINK 31.05.2017 / 16:11

1 resposta

1

Eu posso explicar o erro /dev/snd/pcmC0D0p : este é um dispositivo ALSA. Quando o Pulseaudio inicia, ele abre todos os dispositivos ALSA que pode encontrar e, como os dispositivos de hardware ALSA não podem ser compartilhados e só podem ser abertos uma vez, o dispositivo apresenta um erro "ocupado" na próxima vez que alguém tentar abri-lo.

Portanto, se você executar o Pulseaudio em seu ambiente principal e tiver configurado o VirtualBox para apenas "passar" pelos dispositivos de som, o Pulseaudio principal usará o dispositivo, portanto, o Virtualbox não pode.

Se o virtualbux emular o dispositivo de som, você tem algo mais em execução na caixa virtual que o abre, por exemplo, uma segunda instância do Pulseaudio. Use lsof e ps para descobrir qual.

Modprobing snd-pcm-oss realmente não ajuda: Essa é a camada de emulação de OSS no ALSA, ela gera /dev/dsp etc., que é apenas um alias para /dev/snd/pcmC0D0p com uma API diferente. E se você habilitar os dois module-alsa-sink e module-oss no Pulseaudio, o Pulseaudio terá prazer em abrir ambos, o que obviamente é um absurdo. Então desabilite o material do OSS novamente, essa não é a solução.

Na minha experiência, pulseaudio -vvvv é suficiente para lhe dar uma ideia do que realmente está errado. Se você realmente sofrer uma pane, como em "violação de segmentação" etc., usar strace ou iniciá-lo com gdb , se possível em uma versão com símbolos de depuração, deve novamente dar uma idéia do que realmente está errado. p>

Eu suspeito que sua configuração tenha uma pegadinha em algum lugar, mas eu não tenho informações suficientes para descobrir isso.

    
por 01.06.2017 / 09:03