8/17/2013

[IT] Firefoxが特定サイトでOSごとフリーズ

して困るのでちょっと調べて対処してみたんです。

環境はUbuntu13.04の64bit、Firefoxのバージョンは23.0。特定サイトというのはwww.asahi.comです。ここのトップを開いてしばらくするとシステム全体の挙動が非常に重くなって、Firefoxをkillするまで何も出来なくなります。もっとも、気づくタイミングが遅れるとkillするための別コンソールへの切り替えやそこでの操作すらままならず、あえなく電源を切るしかなくなってしまうわけですけれども。非常に性質が悪い不具合と言わざるを得ません。

一番簡単な解決方法はそのページを見なければいいだけで、実際しばらくはそうしてたんですが、原因が不明なのはどうにも落ち着かないので、少し時間を確保して簡単に調査をしてみた次第なのです。

まず当該現象の概要の確認。ページ表示時のプロセスをチェックして、plugin-containerが数十秒でGByte単位のメモリを消費している事を確認し、これが原因かつその中で問題を起こしているプラグインはflashと推測。

flashが不具合の発生箇所と仮定して、その不具合の発生要因の調査へ移行。第一にその他アドオンとの干渉を考慮し、それらを全て外して表示させてみたところ、全く変わらず。従ってflash単体内部の問題、すなわち当該サイト中の特定コンテンツ再生時の不具合と推測。www.asahi.comトップページのソースを概観し、フラッシュの再生箇所を列挙したところ1箇所のみ、これが原因と推測。表示直後に手動で再生・ループ再生を切るとその時点でplugin-containerのメモリ消費の増加が停止する事を確認、従って本flashデータに問題があるものと確定。

というわけで。問題の原因は、egmpromo2.swfという名前のフラッシュオブジェクトでした。名前とかHTML中のその周辺の感じからして、広告表示用のフラッシュのようで、実際私が確認した時には学校関連の広告等が逐次表示されていました。ページの右下の辺りに小さく表示されるだけの、データ量も本来は非常に小さいだろう事は間違いなく思われる程度のもので、今回の挙動はやはり不具合だった事も確定なのです。確認のため、当該swfファイルをローカルに保存してそれだけ再生してみましたがやはり同様のメモリ消費が発生しました。

フラッシュの中身が問題なのか、再生側のflashplayerが悪いのかはまだ不明ですが、ともあれここまで特定出来れば、当該ページでフラッシュの表示再生、もしくは表示処理にjavascriptを使用しているのでそれを切るかすれば解決なわけです。ふう。

しかし、仮にswf側に問題があったとしても、たかがこれだけの、別にウィルスとかいうわけではない筈の一コンテンツが含まれているページを閲覧するだけで不全に陥るFirefox、またLinuxOSはシステムとして流石にどうかと思うし、同様の問題が他サイトでも起こらないとも限りませんから、抜本的な対策をして置きたいところです。例えばplugin-containerのメモリ使用量に上限を設けるとか。今でも出来そうな気もしますし、ちょっと調べてみましょうかね。ともあれ、今回は一先ずこれでおしまい。

ちなみにShockwave Flashプラグインのバージョンは11.2.202.297でした。参考まで。