Macとかの雑記帳

Chrome 9 になってからシステムごとフリーズする症状が発生するようになってしまいました。どうもWebGLがデフォルトで有効になったことが関係しているようです。

症状と原因(?)

これまでChromeが重くなることはあっても、フリーズすることは一度も無かったのですが、何気なしに米国ライフハッカーを見ていたらChromeどころかシステムごとフリーズした様な状態になり、マウスカーソル以外何も操作を受け付けなくなりました。

ただ、別PCからSSHでログインし、コマンドでの再起動は受け付けたので完全にシステムが固まった訳ではないみたいです。

で、フリーズした時のログを見てみると…

[0x0-0x12e12e].com.google.Chrome[2940]: [2978:17931:22916742709098:ERROR:/b/build/slave/chrome-official-mac/build/src/chrome/gpu/gpu_watchdog_thread.cc(220)] The GPU process hung. Restarting after 10000 seconds.

GPUがハングしてると。

上のエラーでググってみたところ、Project Hosting on Google Codeで同様の症状で困っている人を発見。

これによると、Chrome 9 からデフォルトで有効になったWebGLが原因ではないかというので、試しに上記リンク先にあったWebGLが有効かどうかテストするサイトに飛んでみたところ、WebGLが有効であれば下の様にYayと表示されるはずが、見事にフリーズ。

clam.png

ちなみに、無効な場合はNayと表示されます。

clam.png

2度試しましたが、2回とも固まってくれました。

この症状が環境によるものなのか、Chromeのバグなのかは分かりませんが、とりあえずWebGLをOFFにできればフリーズ回避できそうです。しかし環境設定にはOFFにする項目が無い訳です。

どうにかOFFにできないかと調べると、ターミナルで下記コマンドを実行する方法ならwebGLをOFFできるようです。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-webgl

ブラウザを起ち上げる度にターミナルを使うのは面倒なので、Chromeの実行ファイルに細工を施すことにしました。

とりあえずの回避方

下のコマンドを実行してChromeの実行ファイルをリネーム。

$ sudo mv /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome-org

次に、リネームしたファイルを--disable-webglフラグ付きで実行するスクリプトを作成。

$ sudo nano /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

開いたファイルに下記を記入。

#!/bin/sh


/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome-org --disable-webgl

実行権やら所有者やらグループやらを設定。

$ chmod 755 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
$ sudo chown root:wheel /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

全部済んだらChromeを普通に起動して、WebGLが有効かどうかテストするサイトでWebGLがOFFになっている事を確認。

次回アップデートまでこれで凌ぐしか無いんですかね…。

スポンサード リンク