最小(許可なし)LXCコンテナで実行している場合、Firefoxセグフォルト(他のグラフィックアプリケーションはうまく動作します。)
この分割エラーの正確な原因が見つかりません。(これは権限が不足しているか、リソースが不足している可能性があります。)
# strace /usr/bin/firefox
...
open("/usr/lib/libfreebl3.so", O_RDONLY|O_CLOEXEC) = 26
read(26,"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0007\0\0\0\0\0\0"..., 832) = 832
fstat(26, {st_mode=S_IFREG|0755, st_size=544424, ...}) = 0
mmap(NULL, 2619144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 26, 0) = 0x7f269bf1e000
mprotect(0x7f269bf97000, 2097152, PROT_NONE) = 0
mmap(0x7f269c197000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 26, 0x79000) = 0x7f269c197000
mmap(0x7f269c19a000, 14088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f269c19a000
close(26) = 0
mprotect(0x7f269c197000, 8192, PROT_READ) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x20} ---
unlink("/home/root/.mozilla/firefox/xqa348dr.default/lock") = 0
close(6) = 0
rt_sigaction(SIGSEGV, {SIG_DFL, [], SA_RESTORER, 0x7f26bafb5e80}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
tgkill(228, 228, SIGSEGV) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_TKILL, si_pid=228, si_uid=0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
背景:Firefoxは、最小限の権限を持たないLXCコンテナ(初期化なし、展開全体ではなくFirefox、およびその依存関係)で実行されます。したがって、この問題は、不十分なリソースや存在しないリソースにアクセスする必要があるFirefoxに関連している可能性があると思います。このコンテナ内では、「xclock」などの単純なグラフィックプログラムや「glxgears」などのハードウェアアクセラレーションプログラムも機能できます。おそらくFirefoxが機能しない問題はdbusに関連しているでしょう(正しく設定されているかどうかはわかりません。それが私がしたことですcp /etc/machine-id /container/etc/
)。
修正する:この問題を解決できました。コンテナにfirefoxへの依存関係はありません(すべてのパッケージコンテンツをコンテナのrootfsにマウントするためのアサルトアプローチを取ったので、今はどちらがわかりません)。
アップデート2:上記のセグフォルトの正確な原因を見つける方法にはまだ興味があります。