¿Cómo evitar que Pulseaudio falle cuando inicio una máquina virtual desde VirtualBox?

¿Cómo evitar que Pulseaudio falle cuando inicio una máquina virtual desde VirtualBox?

/!\Actualización 2 a continuación: Pulseaudio no es el culpable, libpam-systemd sí/!\

He notado que cada vez que inicio una máquina virtual desde VirtualBox usando gksu virtualbox %U, Pulseaudio siempre falla. Entonces inmediatamente tengo este error de VirtualBox:

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

y

HostAudioNotResponding

Además, VMware Workstation indica que no puede obtener sonido, ya que se generó este error:

No se puede encontrar /dev/dsp.

Lo cual es cierto, ya que ni siquiera puedo encontrar ese archivo.

Sin embargo, el syslog no dice mucho sobre el fallo:

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.

Ya que solo dice que Pulseaudio no se puede reiniciar ya que /run/user/1000/pulse/tuvo el infame error de ser propiedad de root. Que simplemente arreglé con:

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

Pero, aún así, no hay señales de lo que pudo haber hecho que Pulseaudio colapsara.

Entonces la pregunta es: ¿Qué está causando que Pulseaudio falle y cómo prevenirlo?

Todo se hizo en un Debian 8.7 actualizado con el entorno de escritorio KDE estándar.


Actualización 1:

Después de muchos intentos y conjeturas, obtuve algunas mejoras al editar el archivo /etc/pluse/default.pa.

Habilitando estos módulos de Pulseaudio: - module-alsa-sink - module-oss device="/dev/dsp" Sink_name=output source_name=input

Al habilitar module-ossestas opciones, se habilita el archivo /dev/dsp; y evita que VMware Workstation active su error.

Haciendo una prueba de modo de: snd-pcm-oss

Y deshabilitando estos módulos:

  • módulo-esound-protocolo-unix
  • módulo-suspendido-en-inactividad

Casi no hay ningún error (aunque todavía tengo el de VirtualBox y la infame carpeta Pulse propiedad de root), excepto este que obtuve de 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

Y este desde que inicié Pulseaudio manualmente haciendo "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.

Aún así, no puedo entender por qué aparece el error "/dev/snd/pcmC0D0p" y por qué aparentemente es un problema de permisos.

Aparte de syslog y ejecutar Pulseaudio con modo ultra detallado, no sé cómo puedo rastrear lo que le sucede a Pulseaudio.

¿Hay alguna manera de que pueda proporcionar más información sobre ese accidente?


Actualización 2

Además de lo que hice en la Actualización 1:

/etc/pulse/default.pa se agregó:

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 se agregó:

default-server = 127.0.0.1

modprobe snd-pcm-osstodavía es necesario.

Todo lo relacionado con Pulseaudio funcionó, incluso vmware no se quejó de no obtener /dev/dsp (solo funciona con modprobe snd-pcm-oss). Pulseaudio -vvvv o /var/log/syslog/ no encontraron errores.

Desafortunadamente, todavía falta sonido mientras Pulseaudio funciona perfectamente.

Además, también intenté ejecutar Pulseaudio en modo sistema; pero las cosas no mejoraron y el problema fue el mismo.

Entonces, parecía que el problema principal era que /run/user/1000/pulse fuera propiedad del root, y significa que el verdadero problema es ese infame error.

Después de investigar un poco, descubrí que libpam-systemd está causando eso. Este es un error conocido que Debian obtuvo de Systemd, que se ha informado para Debian Testing (Stretch) y Experimental; pero no estable en absoluto:

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

Con respecto al segundo enlace, también confirmo el problema "gksu gedit", al que también apliqué la misma solución.

El problema parece no estar resuelto, al menos hasta que los mantenedores de Debian Stable actualicen libpam-systemd.

Por otro lado, les envié un informe de error. Además, recomiendo a las personas que enfrentan este error que lo informen nuevamente para que puedan obtener una confirmación verdadera.

Además, si alguien sabe cómo solucionar ese error mientras tanto, estaría encantado de escuchar cualquier solución. Esto también incluye recompilar libpam-systemd como deb (ya que no sé cómo hacerlo correctamente, al estilo Debian), cualquier sugerencia es bienvenida.

Respuesta1

Puedo explicar el /dev/snd/pcmC0D0perror: este es un dispositivo ALSA. Cuando se inicia Pulseaudio, abre todos los dispositivos ALSA que puede encontrar y, como los dispositivos de hardware ALSA no se pueden compartir y solo se pueden abrir una vez, el dispositivo muestra un error de "ocupado" la próxima vez que alguien intente abrirlo.

Entonces, si ejecuta Pulseaudio en su entorno principal y ha configurado virtualbox para simplemente "pasar a través" de los dispositivos de sonido, el Pulseaudio principal usa el dispositivo, por lo que el virtualbox no puede.

Si virtualbux emula el dispositivo de sonido, tiene algo más ejecutándose en la caja virtual que lo abre, por ejemplo una segunda instancia de Pulseaudio. Utilice lsofy pspara descubrir cuál.

Modprobing snd-pcm-ossrealmente no ayuda: esa es la capa de emulación de OSS en ALSA, proporciona, /dev/dspetc., que es solo un alias /dev/snd/pcmC0D0pcon una API diferente. Y si habilita ambos module-alsa-sinky module-ossen Pulseaudio, Pulseaudio felizmente abrirá ambos, lo cual, por supuesto, no tiene sentido. Así que deshabilite el OSS nuevamente, esa no es la solución.

En mi experiencia, pulseaudio -vvvvesto es suficiente para darle una idea de lo que realmente está fallando. Si realmente falla, como en el caso de una "violación de segmentación", etc., usarlo straceo iniciarlo con gdb, si es posible en una versión con símbolos de depuración, debería darle nuevamente una idea de lo que realmente sale mal.

Sospecho que su configuración tiene un problema en alguna parte, pero no tengo suficiente información para resolverlo.

información relacionada