Como evitar que o Pulseaudio trave ao iniciar uma máquina virtual no VirtualBox?

Como evitar que o Pulseaudio trave ao iniciar uma máquina virtual no VirtualBox?

/!\Atualização 2 abaixo - Pulseaudio não é o culpado, libpam-systemd sim/!\

Percebi que toda vez que inicio uma máquina virtual do VirtualBox usando gksu virtualbox %Uo Pulseaudio sempre trava. Eu imediatamente recebo este 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 afirma que não consegue obter som, pois este erro gerou:

Não foi possível encontrar /dev/dsp.

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

No entanto, o syslog não diz muito sobre a falha:

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.

Uma vez que diz apenas que o Pulseaudio não pode ser reiniciado, pois /run/user/1000/pulse/obteve o infame bug de ser propriedade do root. Com o qual simplesmente consertei:

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

Mas, ainda assim, não há sinal do que poderia ter causado o travamento do Pulseaudio.

Portanto, a questão é: 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 desktop KDE padrão.


Atualização 1:

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

Ao ativar estes módulos Pulseaudio: - module-alsa-sink - module-oss device="/dev/dsp" sink_name=output source_name=input

Habilitando module-ossessas opções, habilita o arquivo /dev/dsp; e evita que o VMware Workstation acione seu erro.

Fazendo um modeprobe de: snd-pcm-oss

E desabilitando estes módulos:

  • módulo-esound-protocol-unix
  • módulo suspenso em inativo

Quase não há nenhum bug (ainda tenho o VirtualBox e a infame pasta pulse de propriedade do root), exceto este que recebi 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, não consigo entender por que ocorre o erro "/dev/snd/pcmC0D0p" e por que aparentemente é um problema de permissão.

Além do syslog e da execução do Pulseaudio com modo ultra detalhado, não sei como posso rastrear 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 anexado:

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 anexado:

default-server = 127.0.0.1

modprobe snd-pcm-ossainda é necessário.

Tudo relacionado ao Pulseaudio funcionou, até o VMware não reclamou de não conseguir /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 propriedade do root, e significa que o verdadeiro problema é aquele bug infame.

Depois de alguma pesquisa, descobri que o libpam-systemd está causando isso. Este é um bug conhecido que o Debian obteve do Systemd, que foi relatado para Debian Testing (Stretch) e Experimental; mas não é nada estável:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732209

http://forums.debian.net/viewtopic.php?f=10&t=110035

https://bugs.debian.org/cgi-bin/pkgreport.cgi?dist=unstable;package=libpam-systemd

Em relação ao 2º link, também confirmo o problema "gksu gedit", ao qual também apliquei a mesma solução alternativa.

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

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

Além disso, se alguém souber como consertar esse bug, eu ficaria feliz em ouvir qualquer solução. Isso também inclui recompilar o libpam-systemd como um deb (já que não sei como fazê-lo corretamente, no estilo Debian), qualquer dica é bem-vinda.

Responder1

Posso explicar o /dev/snd/pcmC0D0perro: este é um dispositivo ALSA. Quando o Pulseaudio é iniciado, 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 de “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 poderá.

Se o virtualbux emular o dispositivo de som, você terá outra coisa em execução no virtualbox que o abre, por exemplo, uma segunda instância do Pulseaudio. Use lsofe pspara descobrir qual.

Modprobing snd-pcm-ossrealmente não ajuda: essa é a camada de emulação OSS no ALSA, fornece /dev/dspetc., que é apenas um alias para /dev/snd/pcmC0D0puma API diferente. E se você habilitar ambos module-alsa-sinke module-ossno Pulseaudio, o Pulseaudio abrirá ambos com prazer, o que é obviamente um absurdo. Então desabilite o OSS novamente, essa não é a solução.

Na minha experiência, pulseaudio -vvvvé o suficiente para lhe dar uma ideia do que realmente está errado. Se você realmente travar, como em "violação de segmentação" etc., usá-lo straceou iniciá-lo com gdb, se possível em uma versão com símbolos de depuração, deverá novamente lhe dar uma ideia do que realmente está errado.

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

informação relacionada