先日、Firefoxに移行しようとした時に見つかった問題を解決(正確には暫定対処)できた。
現象
- ChromeやVivaldi(以下、Chrome)を起動すると、Firefoxが一時(十秒程度)ハングする。
- Firefoxの子プロセス(-contentprocの付いているもの)のプロセス(複数)の負荷が高くなり、その間、Firefoxの操作ができなくなる。
試したこと・原因調査など
- FirefoxやChromeのアドオンは関係ない。
- Firefoxのセーフモードでも問題は起こる。
- OSのキャッシュの量も関係ない(クリアしても問題は起こる)。
- 検索したら、fontconfigに関係する既知の問題だった。Chromeを起動する時に、Chromeの処理の副作用なのか、Firefoxがフォント関係の初期化を行うために重くなるようだ。
- 上記2の回答を参考に、フォントのディレクトリ(~/.fonts)を一時的になくしてVivaldiを起動したら、問題が起こらなくなった。
対処
僕がChromeを使うのは、Authyのアプリを使う時だけなので、その時だけ通常の~/.fontsを無効にする起動スクリプトを作った。以下に、ブラウザがVivaldiの場合の例を示す。
- 準備
- Authyアプリ用の仮のHOMEを作る。 → ~/.gca-authy-home
- そこでAuthy用のVivaldiとAuthyを初期設定する。
- Authy用Vivaldiの起動: (export HOME=$HOME/.gca-authy-home; vivaldi)
- 以下、Authy用Vivaldiでの作業
- Authyのアドオンをインストールする。
- Authyのアプリをインストールする。
- Authyアプリを起動して初期設定する。
- AuthyアプリのIDを調べる。
- $HOME/.gca-authy-home/.config/vivaldi/Default/Extensions下のいずれか(おそらく最新のもの)がAuthyアプリのディレクトリのはず(その下のmanifest.jsonの中のapp_nameやdescriptionを調べれば確実)なので、その名前がID。
- IDはスクリプトで調べると便利である(例は次を参照のこと)。
- Authy用VivaldiでAuthyアプリを起動する。以下のようなスクリプトを作った(エラー処理は非記載)。
tmp_home=$HOME/.gca-authy-home # 仮のHOME
app_name_pat="\"app_name\":\s+\"authy\"" # Authyアプリの検索パターン
# AuthyアプリのIDを調べる。 → $app_id
app_fname=`find $tmp_home/.config/vivaldi/ -type f -name "manifest.json" -exec egrep -m 1 -l "$app_name_pat" {} \;`
app_id=`echo "$app_fname" | sed -r -n 's@.+Default/Extensions/([^/]+)/.+@\1@p'`
# VivaldiでAuthyアプリを起動する(太字部分はAuthyアプリのID)。
export HOME=$tmp_home
exec /usr/bin/vivaldi --app --app-id=$app_id
備考
- パッケージfontconfigを更新すれば直るという情報もあるが、解決しない(ハングする時間が短くなるだけ)という情報もあった。
- Authyアプリだけなら、Vivaldiのメモリ使用量は600MB以下と少ない(良く考えると、大きいw)。仮のHOMEのサイズも40MB程度と小さい(今後、キャッシュで増えるかも)。
Authyが手軽に使えるようになったので、Firefoxへの移行は問題なさそうだ。ただ、将来、Chromeアプリはなくなるようなので、その時はどうなるか心配はある。が、それはAuthyの問題で、Firefoxとは関係ないので、その時に考えれば良い。
naoki: 2018年12月28日 08:50
そんな問題があったんですか。
それにしても、鮮やかに解決されますね。
スクリプトを作るとか、本当格好いいです。憧れます。
れんと: 2018年12月28日 09:00
●ありがとうございます。そうなんです。Linuxだけだと思いますが。それにしても、全く無関係の2つのアプリが影響し合うなんて、信じられませんでした。
前から気になっていたので、起きたらどうにもやりたくなって、調べたらヒントが見つかったので、やり出したらうまく行きました。おかげでドライブに行く気が半減ですw
このスクリプトは、小さいけど結構おもしろかったです。自動でIDを見つけるのは、我ながらいいですw
naoki: 2018年12月28日 09:12
ドライブに行く気半減ww
いや、たまにはエンジン回してやらないと、
バッテリーが気になります。
僕も入院中、全くコペンを動かしてなかったので、
今日は内科受診してから伊香保に行くつもりですが
カミさんには
「痛くなって動けなくなっても迎えに行けないよ!」
と止められてますw
れんと: 2018年12月28日 09:32
●満足しちゃったとか、もっと改良したいとかでw・・・
でも、天気はいいし、バッテリーも気になるので、これから出ようかなとw
え、なおきさん、運転とは元気過ぎませんか??w 首は回せます?
naoki: 2018年12月29日 23:58
首は回せないんですが、ポリネックをつけていてもつい回してしまうというかw
お恥ずかしながら、れんとさんから返信いただいてから今日までに、ドライブの件でカミさんと結構な喧嘩をしました。
最終的にはお互い歩み寄ったんですが、
まあ、運転翌日に伊香保とか言ったら普通の家族は心配しますよねw
僕は僕で、それを励みに頑張った、というのもあったんですが……。
ちょっとカミさんの言うことも聞いて、少しおとなしくしようと思いました。
れんと: 2018年12月30日 06:05
●そうでしたか。元気があるのは良いことだと思います。運転したかった気持ちが良く分かります。楽しいですもんね。ずっと病院だったら、そういうことが待ち遠しくなりますね。
一方で、僕には奥さんの心配されるお気持ちも良く分かります。仮に僕だったら、自分で心配して、一人では行けない気がします。
ですので、お互いに歩み寄られたのは良かったと思います。例えば、最初は近場で試すとかが良いと思います。