手っ取り早く治したい方へ
Yosemiteにアップデートして使っていたところ、ずっとCrash ReporterがCPUを30%近く占拠する状況で、もしコンソールでsoagentなどが「Code Signature Invalid」が原因でError Reportされている場合、dyldの共有キャッシュが古いことが原因の可能性があります。その場合、dyldの共有キャッシュを更新するために下記のコマンドを実行します。
sudo update_dyld_shared_cache
これでError Reportがでなくなりました。お困りの方はぜひお試し下さい。
症状の詳細
コンソールで確かめるとsoagent、sharingd、AddressBookSourceSyncなどがほぼ毎秒落ちており、その度にCrash Reportをする状況。
Error Reportを見ると
Exception Type: EXC_BAD_ACCESS (Code Signature Invalid)
となっている。この「Code Signature Invalid」をヒントに、その他のコンソールのログを確かめると、下記のようにCode Signatureを調べる際に、dyld_shared_cacheを元に調べているようです。
2014/10/19 19:36:01.000 kernel[0]: CODE SIGNING: process 626[AddressBookSourc]: rejecting invalid page at address 0x7fff9b73c000 from offset 0x162b0000 in file "/private/var/db/dyld/dyld_shared_cache_x86_64" (cs_mtime:1413545821.0 == mtime:1413545821.0) (signed:1 validated:1 tainted:1 wpmapped:0 slid:0)
このdyld_shared_cache_x86_64の最新更新日時を確かめると、どうやらYosemiteにUpdateする前の日付。この時点で古いCacheが原因であると推測。(キャッシュの日付は10月17日。筆者は10月18日にYosemiteに更新)
$ ls -l /private/var/db/dyld/dyld_shared_cache_x86_64
-rw-r--r-- 2 root wheel 381405330 10 17 20:37 /private/var/db/dyld/dyld_shared_cache_x86_64
このdyldのcacheを更新するた方法として、update_dyld_shared_cacheというコマンドがあり、これを実行することでCacheが更新されます。
sudo update_dyld_shared_cache
Cacheが更新されたか確認。
$ ls -l /private/var/db/dyld/dyld_shared_cache_x86_64
-rw-r--r-- 2 root wheel 381524694 10 19 20:17 /private/var/db/dyld/dyld_shared_cache_x86_64 # cacheの日付が10月19日になっている。
以上のようにdyldの共有キャッシュを更新することで、Code Signature Invalidのエラーが解消されますので、お困りの方はお試し下さい。