妄想まとめ

研究とかWebセキュとか時事ネタとか。 @kazu1130_h

chromeが死んだお話

ある日突然ChromeがCrashしまくるようになりました。
facebook開いて、適当なリンクに飛ぶと親子タブ共々sad tabになるというsadな状況です。
因みに最初はC9のvikiでCrashしたので、「あ、これなんかやばいモノ埋め込まれたな」とか思って結構焦ったのですが、特に怪しげなものは無く……。


その後も色々な所でクラッシュしまくったので、その中の一つをクラッシュする最小限のコードまで削った結果、原因となるHTML,CSSのコードは特定できました。
ですが、なんでそれで死ぬかが分からず、デバッガを使ってゴリゴリ追いかけていくのはWeb屋的には面倒な上、どうもdllのロードかfunction呼び出しで詰まってるっぽいって事までは分かったのでIssueに投げて放置することにしました。


で、そんなChromeの代用が必要になったので、一時的に乗り換えることにしました。
ですが、使い慣れたブラウザを捨てるのはどうもアレなので、なるべく近いUI/使用感のものでまともに動くのを探しました。

  1. Chromium
    • Chromeの基のブラウザ
    • Blinkというエンジンを使っているらしい。webkitからfork
    • "Google Chrome" - "Google" / 2 (個人的なイメージ)
  2. SRWare Iron
    • Chromiumを基にしたブラウザ
    • ドイツの科学力は(ry
    • webkitのままらしい
    • Chrome的なブラウザが欲しいけどプライバシーが……って人向けらしい


で、ググってて二本目でIron引いて、ChromeでもChromiumでもクラッシュしてたpoc.htmlを見事に正しくレンダリングしてくれたので、そっちに乗り換えることにしました。
因みにこのIron、レジストリを汚さないPortable版もあります。凄くイイネ!!!


乗り換え方は非常に簡単で、http://www.srware.net/en/software_srware_iron_download.phpからPortable版をDLして、適当に入れて、起動するだけです。日本語なので楽チン。

一工夫するなら、SettingsからLanguageに行って日本語を追加して、それでIronを表示させてやると幸せになれます。(何故か英語版が起動したとき用)

あと、Chromeの設定を引き継ぐ方法としては、めっちゃイヤらしいやり方なんですが、

C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default

のデータを適当にコピーすればそのまま使えます。(Defaultは各々のChrome Userにあわせて)
BookmarksとかCookiesとか分かりやすい名前なので、必要そうなのだけコピーして使えばいいと思います。
よく分からないならフォルダ以外全部コピーとかでも動くと思います。


因みにdebug.log中にあったメッセージはこんな感じのです。
[0118/155002:ERROR:client_util.cc(307)] Could not find exported function RelaunchChromeBrowserWithNewCommandLineIfNeeded
各所で話題のエラーみたいですね。
僕の環境ではアンインストールしようが設定初期化しようがダメだったので直すことを諦めました。Chromiumのソースに該当部分があるのですが、直前でdllを読み込んで、そこになければエラーを吐くって内容でした。同名の関数がchrome.dll中にあったし、Process Explorer先生で見た感じどうもcrashしてるchromeではコイツを読み込んでなかったっぽい?(要出典)


Chromeが直ったら戻る予定ですが、Ironは普通に良さげなので乗り換えるのもアリかなぁ。。。