平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

mdsの暴走でつらいことになったお話

要約

mdsが暴走してMacの空きメモリがどんどん食われていく事案に遭遇して、とりあえず解決したので記録します。

発端

事件が起こったのは昨日(日曜)の夜。外出から戻ってきてMacBookの蓋を開いたらひどいことになった。

ツイート引用にも書いたけど、空きメモリがすごいスピードで"非使用中"に食われていく。アクティビティモニタでプロセスリストを見るだけじゃ何が怪しいのかわからない。 1分に1度くらいの感覚でsudo purgeし続けて空きメモリを残さないと何もかもままらない。

……とまぁ、最悪な感じになりました。

ログを読む

とりあえず立ち上げていたアプリを順番に閉じてみたもののこの惨状は変わらず、どーしたものかと思いながらConsole.appでログを見ると、

13/10/20 23:50:57.828 mdworker32: (Error) Import: Couldn't find bundle identifier for /Users/僕です/.Trash/BathyScaphe.app/Contents/Library/Spotlight/BathyScaphe.mdimporter
13/10/20 23:50:59.213 mdworker: (Error) Import: Couldn't find bundle identifier for /Users/僕です/.Trash/BathyScaphe.app/Contents/Library/Spotlight/BathyScaphe.mdimporter

(バージョンアップ時にゴミ箱に捨てた古い)BathyScaphe.appの中にあるmdimporterの読み込みに失敗してなんかヒィヒィ言っているっぽいことが発覚した。

とりあえず対処

BathyScaphe.appを削除すれば良いんだな!(錯乱)という気概になったので、ゴミ箱を空にした。

するとこの異常な事象は収束して、10秒間じっとアクティビティモニタを眺めても青ゲージは特に増えないという幸福な日常を手にすることができた。

一体なんだったのか

ゴミ箱にあったBathyScaphe.appについて思いを馳せたところ、多分こういう経緯を辿った物体だったと思う。

  • アップデートのため古いBathyScaphe.appをゴミ箱に捨てた
  • その後一度ゴミ箱を空にするを実行したら、(mdimporterが?)まだ使用中だったから中途半端に削除された
  • 結果として、(Bundle Identifierのない)壊れたmdimporterが残った状態になってしまった
  • 何かの拍子にmdsがこのimporterを使って索引を作ろうとして、結果おかしなことになった
  • その後もう一度ゴミ箱を空にするを実行したら今度はBathyScaphe.appがまるまる削除されたので、事態が収束した

この件、結局誰が悪かったのかというと、多分一番悪いのはmdimporterがぶっ壊れた程度で秒速100MBの勢いでメモリの緑ゾーンを青に食い尽くすmdsだかその辺なんだと思うけど、仮にこれが割と再現性ある挙動だとしたら(確かめてない)、アップデート時にゴミ箱に捨てるSparkle.framework使ってて、かつ自前でmdimporterを持ってるアプリはみんなこの事態が発生する危険性を秘めてることになるのかもしれない。調べてないからどんどんよく分からなくなってきた。

結論

メモリは多ければ多いほど幸せになれるけど、例え16GB積んでても何かあるとすぐ埋まって死ぬ