歪曲劇場

Smart Crash Reports

最近どうもMacが重い気がしていた。 しかも、FloatingStatが不意に落ちたりする。 で、色々調べていたんだけれど、どうも犯人はこいつらしい。

Smart Crash Reportsは、Cocoaアプリケーションのデバッグを支援するための InputManager bundleである(らしい)。 Cocoaアプリケーション起動時にそのプロセスの一部として読み込まれるのだが、 どうもこの時にグローバル変数NSZombieEnabledをtrueに設定しているらしい。

その結果どうなるかというと、Objecttive-Cランタイムがオブジェクトを開放する時に、 オブジェクトのクラスだけをNSZombie(実際には「NSZombie_元のクラス名」という サブクラス)にすげ替える。 誤って開放されたオブジェクトに対するメッセージを補足し、デバッグするための仕組みだ。

まあ、これだけのオーバーヘッドだったら、大した問題じゃない。 深刻なのは、NSZombieオブジェクトがプロセスが終了するまで決してメモリから 開放されないということだ。 Cocoaアプリケーションを長時間実行していると、いつかは仮想記憶を食いつぶして 死んでしまうことになる。で、その実例がFloatingStatだった模様。

Unsanityの中の人がNSZombieの副作用について知らないはずがないから、 多分デバッグコードが紛れ込んだりしただけだと思うのだが、 勝手にインストールするのはやめて。お願い。

【10/25追記】 Unsanityに報告したところ、早速返事があった。Labels Xのパッケージにデバッグ版のSCRが混入していた、とのこと。現在は差し替えられているらしい。

posted at 21:56:22 on 2005-10-22 by ichiro - Category: OSX

Comments

No comments yet

Add Comments

このアイテムは閲覧専用です。コメントの投稿、投票はできません。