VirtualBoxで仮想マシンを起動したときにPulseaudioがクラッシュするのを防ぐにはどうすればよいですか?

VirtualBoxで仮想マシンを起動したときにPulseaudioがクラッシュするのを防ぐにはどうすればよいですか?

/!\以下のアップデート2 - Pulseaudioは犯人ではなく、libpam-systemdは/!\

VirtualBoxを使用して仮想マシンを起動するたびに、gksu virtualbox %UPulseaudioがクラッシュし続けることがわかりました。その後、VirtualBoxですぐに次のエラーが発生します。

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

そして

HostAudioNotResponding

また、VMware Workstationは、次のエラーが発生して音が出ないと言います。

/dev/dsp が見つかりません。

ファイルが見つからないため、これは本当です。

ただし、システムログには競合に関する情報はあまり記載されていません。

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.

/run/user/1000/pulse/なぜなら、Pulseaudioにはルート所有の悪名高いバグがあるため、再起動できないと言われているからです。私は簡単に修正しました:

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

しかし、Pulseaudioの衝突原因の兆候はまだありません。

だから質問は:Pulseaudioがクラッシュする原因は何であり、これを防ぐ方法は何ですか?

更新されたDebian 8.7と既存のKDEデスクトップ環境ですべての作業が完了しました。


アップデート1:

多くの試みと推測の最後に、/etc/pluse/default.paファイルを編集していくつかの改善を得ました。

これらのPulseaudioモジュールを有効にすると: - module-alsa-sink - module-oss device="/dev/dsp" sing_name=output source_name=input

このオプションを使用すると、module-oss/ dev / dspファイルがアクティブになり、VMware Workstationでエラーが発生しません。

パターン検出の実行:snd-pcm-oss

次のモジュールを無効にします。

  • モジュール esound-プロトコル-Unix
  • アイドル状態のときモジュールがハングする

エラーはほとんどありません(VirtualBoxとルートが所有する悪名高いパルスフォルダはまだありますが)。 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

これは、「pulseaudio -vvvv」を実行してPulseaudioを手動で起動したためです。

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.

それでも、「/dev/snd/pcmC0D0p」エラーが発生した理由と、これが明らかに権限の問題である理由を理解できません。

私はsyslog以外のPulseaudioで何が起こっているのかを追跡し、HyperverboseモードでPulseaudioを実行する方法を知りません。

この事故についてより多くの情報を提供する方法はありますか?


アップデート2

アップデート 1 で行った作業に加えて、次の作業が行われました。

/etc/pulse/default.pa が追加されます。

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 追加:

default-server = 127.0.0.1

modprobe snd-pcm-ossそれでも必要です。

Pulseaudioに関連するすべてが機能し、vmwareも/ dev / dspを取得できないことについて文句を言いません(のみmodprobe snd-pcm-oss)。 Pulseaudio -vvvvまたは/var/log/syslog/エラーが見つかりませんでした。

残念ながら、Pulseaudioは正常に動作しますが、サウンドはまだありません。

また、システムモードでPulseaudioを実行してみましたが、状況は改善されず、問題は同じままです。

したがって、主な問題は、/run/user/1000/pulseがルート所有であることです。これは、実際の問題が悪名高いエラーであることを意味します。

いくつかの調査の後、libpam-systemdがこの問題の原因であることがわかりました。これは Debian が Systemd からもたらされる既知のバグであり、Debian テスト(拡張)および実験で報告されていますが、まったく安定していません。

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

2番目のリンクについても、「gksu gedit」の問題を確認し、同じ回避策を適用しました。

この問題は、少なくともDebian Stable管理者がlibpam-systemdを更新するまでは解決されていないようです。

一方、私は彼らにバグレポートを送った。また、このエラーが発生した場合は、実際の確認を受けるためにこのバグを報告することをお勧めします。

また、その間にこのエラーを解決する方法をご存知でしたら、解決策をお知らせします。これには、libpam-systemdをdebに再コンパイルすることも含まれます(私はDebianの方法でこれを正しく実行する方法がわからないので)。どんなヒントでも大歓迎です。

答え1

この/dev/snd/pcmC0D0pエラーはALSAデバイスです。 Pulseaudioが起動すると、見つかったすべてのALSAデバイスが開きます。 ALSAハードウェアデバイスは共有できず、一度だけ開くことができるため、次に誰かがデバイスを開こうとすると、デバイスに「使用中」エラーが表示されます。

したがって、デフォルト環境でPulseaudioを実行し、サウンドデバイスのみを「通過」するようにvirtualboxを設定した場合、デフォルトPulseaudioはそのデバイスを使用するため、virtualboxは使用できません。

virtualbuxがサウンドデバイスをエミュレートした場合は、それを開くためにPulseaudioの2番目のインスタンスなど、virtualboxで実行されている他の項目が必要です。それを使用lsofし、psそれがどれであるか調べなさい。

Modprobingは実際には役に立ちません。これはALSAのOSS模擬層であり、さまざまなAPIのエイリアスにすぎsnd-pcm-ossません。そしてPulseaudioでとを有効にすると、Pulseaudioは両方をオンにします。もちろん、これは言わないことです。したがって、OSS機能を再び無効にすることは解決策ではありません。/dev/dsp/dev/snd/pcmC0D0pmodule-alsa-sinkmodule-oss

私の経験では、pulseaudio -vvvvこれは実際に何が間違っているかについてのアイデアを提供するのに十分です。 「セグメント違反」などの競合が発生した場合は、可能であれば、デバッグシンボルを含むバージョンでそれを使用または実行すると、strace実際に何が間違っているのかを再度知ることができます。gdb

どこかに設定に問題があるようですが、それを修正するのに十分な情報がありません。

関連情報