チケット #1654 (closed 不具合: 対応済) — at バージョン 4
保存時等に虹色カーソルになり、数十秒フリーズすることがある?
報告者: | daisuke | 担当者: | daisuke |
---|---|---|---|
優先度: | 普通 | マイルストーン: | 3.6.3 |
コンポーネント: | アプリケーション | バージョン: | |
キーワード: | 関係者: |
説明 (最終更新者: daisuke) (diff)
再現条件不明
→他アプリと同じファイルを開き、他アプリで保存した場合に発生。
0.2s間隔で保存を行うテストアプリを作成して、再現。数分程度で再現する。(バージョン3.6.2)
対策メモ
<原因>
下記の条件を満たす場合に問題発生する。
・presentedItemDidChangeの中で当該ファイルのreadを行っている。
・そのreadのfile coordinatorのoptionにNSFileCoordinatorReadingWithoutChangesフラグはつけていない。
→おそらくfile coordinatorによりコールされる他プロセスのsavePresentedItemChangesWithCompletionHandlerと、presentedItemDidChangeのリターンがOS内でデッドロックを起こしている。必ずしも問題発生しない(1/300程度の確率)ので、おそらくタイミングイシュー。
Appleドキュメントに特に記述は見つけられなかった。OS不具合の可能性あり?
<対策>
・presentedItemDidChangeの中で直接readせず、内部イベントキューにイベントを積む。
・file coordinatorのread処理にNSFileCoordinatorReadingWithoutChangesを付ける。