読者です 読者をやめる 読者になる 読者になる

Re:Readme

PCトラブルや環境構築、家電量販店とかで買ったもののメモ。ご利用は自己責任で。

SafariのDebugタブをいじくってたら起動時にクラッシュするようになった話

OS XMavericksだかYosemiteだかにアップグレードしてからSafariの動作が重くて仕方ない。El Capitanで改善されてるかと思えばそういうわけでもなく…。「メモリ積んだ新しいPCで快適に動くようにしたから買い換えて!」ってことなのかな?
ともかく、Safariの動作もうちょいなんとかならんかなー、といろいろいじってたら起動直後にクラッシュするようになってしまった。


ターミナルで

$ defaults write com.apple.Safari IncludeInternalDebugMenu -bool true

を実行してやると、Safariのメニューバーに「Debug」というメニューが追加される。末尾のtrueをfalseに変えると見えなくなる。
このDebug > Disable per-tab processをクリックしてtrueにすることで、メモリが少ない環境では動作がマシになるらしい(Mountain Lion以前はそもそもタブごとにプロセスを走らせていなかったそうで)。個人的にはそんなに動作が変わったように見えなかったけど。

で、この時Debug > Show Caches Windowをクリックしてしまうと、次のようなウィンドウが表示された後にSafariが落ちる。

f:id:hal_drumas:20170220003855p:plain

しかも次回起動時もCachesウィンドウが開いてくれるので、実質Safariが起動できなくなってしまった。

Safariの再インストールを考えたが、どうもSafari単体のインストールというのはできないらしい(OS Xと抱き合せ)。
やらかしたらTime Machineで復元すればだいたいなんとかなるんだけど、たまたまバックアップが手元になく、すぐに使えない状態だったので非常に困った(直し方を調べるにもPCが使えないと不便)。

OS Xを再インストールするも、相変わらずCachesウィンドウが起動してしまう。ゲストアカウントでは正常にSafariを起動できたので、アカウント個別の設定をなんとかしなければ解決しなさそう。

ということで、環境こそ異なるものの同様の現象に見舞われた先駆者様をなんとか見付けることができたので、そこでのやり取りを参考にしてみた。
Safariを終了後(というか勝手に終了しちゃうんだけど)、ターミナルで

$ rm ~/Library/Caches/com.apple.Safari/Cache.db
$ rm ~/Library/Saved\ Application\ State/com.apple.Safari.savedState/

を実行。その後PCを再起動する。
前者はキャッシュのデータベース、後者は前回のアプリケーション終了時の状態を保持したファイルらしい。rmコマンドで削除しなくてもテキトーなフォルダに移しておいて、いつでも戻せるようにしておいてもいいかも。

話が脱線してしまったが、その後Safariを起動してみるとやはりCacheウィンドウが開いてしまう。
他に何か手はないかと先のフォーラムを眺めると、「Shiftキーを押しながらアプリを起動すると、前回終了時の設定を無視できる」という文言がさらりと書いてあって、これを試したところ見事Cacheウィンドウが開かずにデフォルトのページが表示された。


以上が解決までの顛末である。
いくらユーザが基本的に触らない(触れない)Debugメニューでの事象と言っても、使うとクラッシュするような機能を放置してリリースしてるとは......とんだ災難だった。