Mozilla Flux

Mozilla関係の情報に特化したブログです。

Windows版Firefox 33でクラッシュやハングが多くなったと感じたら(追記あり)

まもなくFirefox 33がリリースされるが、Windows版Firefox 33では、OMTC(Off Main Thread Compositing)と呼ばれる機能が有効化されている(Bug 1074045)。これは、描画の前段階としてWebページ内の各要素から成る複数のレイヤーを一つにまとめる処理を、メインスレッドから独立したcompositorスレッドで行うというものだ(参照1参照2参照3)。

OMTCが有効化されることで、Firefox本体の応答性が高まり、キビキビとした動作となることが期待される一方、これまでとは処理プロセスが変わるため、クラッシュやハングの原因となる可能性がある。この点についてMozillaは、Firefox 32でOMTCを有効化することを見合わせ、Beta版で判明したバグを潰していくことによって、目立ったクラッシュ率の増加などが起きないようにしているが、いかんせんBeta版とリリース版ではユーザーの規模が全く違う(30倍以上)。リリース前には判明しなかったバグが出てくることもあるだろう。

Firefox 32のときと比べてクラッシュやハングが多くなったと感じた場合、手動でOMTCの設定を無効化して様子を見るのも手だ。about:configの設定画面でlayers.offmainthreadcomposition.enabledlayers.async-video.enabledの設定をそれぞれfalseに変更すれば、OMTCは無効化される。

それでも症状が治まらない場合、別の原因が考えられる。そのときは、Firefoxヘルプの「Firefox がクラッシュする」と「Firefox がハングアップまたは応答なしになる」を参照して対処するのがよいだろう。

(14/10/25追記)
筆者の予想とは少し違って、Firefox 33のリリース後、一部の環境で起動時にコンテンツ領域が真っ黒になるバグ(Bug 1083071)が発生していたが、この問題に対処したFirefox 33.0.1がリリースされた

対処の中身だが、単純に本記事で紹介した設定をオフにしたわけではない。OMTCは、Firefoxが今後マルチプロセス化する際に欠かせない機能の1つとされており、Mozillaとしては後戻りすることは避けたかった。

そこで、当初、一部の比較的古いグラフィックス・ドライバ(Intel製)を使用する環境で、グラフィックスのハードウェア・アクセラレーションを無効化する方法が検討されたのだが、結局この方法の採用は見送られた。新しいドライバでも問題が起きる可能性があった上、少なくないユーザーにパフォーマンスの低下という犠牲を強いることにもなるからだ。

実際に採用されたのは、Direct3D 11が正常に機能するかをチェックし、問題があればDirect3D 9を使うようにするという方法である。メーカー製PCがIntelのGPUを搭載している場合、ユーザーはメーカーが提供しない限りグラフィックス・ドライバを更新できない(システム上は可能でもサポート対象外になる)ことが多いだろうから、Mozillaのアプローチは正しいと思う。