状況
iPhotoが起動と同時にクラッシュする。クラッシュログは以下のとおり。
Process: iPhoto [1675] Path: /Applications/iPhoto.app/Contents/MacOS/iPhoto Identifier: com.apple.iPhoto Version: 9.1.1 (9.1.1) Build Info: iPhotoProject-5310000~5 App Item ID: 408981381 App External ID: 3231463 Code Type: X86 (Native) Parent Process: launchd [667] Date/Time: 2011-01-07 02:38:50.177 +0900 OS Version: Mac OS X 10.6.6 (10J567) Report Version: 6 Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 com.apple.CoreFoundation 0x90c51ec0 CFStringGetLength + 80 1 com.apple.CoreFoundation 0x90c51cce CFURLCreateWithFileSystemPath + 30 2 com.apple.prokit 0x017ba5b1 +[NSProFont registerProUIFont] + 290 3 com.apple.prokit 0x017b9a02 +[NSProFont initialize] + 67 4 libobjc.A.dylib 0x96634510 _class_initialize + 380 5 libobjc.A.dylib 0x9663b972 prepareForMethodLookup + 85 6 libobjc.A.dylib 0x9663cc17 lookUpMethod + 86 7 libobjc.A.dylib 0x96634367 _class_lookupMethodAndLoadCache + 40 8 libobjc.A.dylib 0x96633f13 objc_msgSend + 83 9 com.apple.iLifeKit 0x016f8ec3 +[iLifeKit install] + 131 10 com.apple.iPhoto 0x00003707 0x1000 + 9991 11 com.apple.iPhoto 0x00003275 0x1000 + 8821/var/log/system.logには以下のようなメッセージが表示されている。
imac iPhoto[1322]: System font path not found in bundle at path: /System/Library/PrivateFrameworks/ProKit.framework
英語的に何か間違っているような気がするが気にしない。
原因推定と暫定対策
ProKitフレームワークがフォントを見つけ切れないのではないかと推測。
具体的にどのフォントなのかは不明だが、さしあたりProKit.frameworkフォルダに含まれているHelveticaNeueUI.ttcを/System/Library/PrivateFrameworks/ProKit.frameworkにコピーしてみたところ無事起動した。
根本対策
上記対策で起動はするようになったのだが、どうも解せない。ProKitはMacOSX 10.6.6 updateに含まれているが、インストールに不備があってこのような事態になっているのではないかとの疑念が頭から離れない。
そこでProKitUpdate6.0.1.dmgを入手、unpkgで展開してMacOSX 10.6.6 Updateと比較してみたところ、明らかな差異を発見できた。
ProKitUpdate6.0.1のProKit.framework/ 以下でlsを実行した場合。
lrwxr-xr-x 1 masahito staff 23 1 7 19:12 ProKit@ -> Versions/Current/ProKit -r--r--r-- 1 masahito staff 405 1 7 19:12 ProKitVersion.plist lrwxr-xr-x 1 masahito staff 26 1 7 19:12 Resources@ -> Versions/Current/Resources drwxr-xr-x 4 masahito staff 136 1 7 19:12 Versions/
MacOS X 10.6.6 updateのProKit.framework/ 以下でlsを実行した場合。
drwxr-xr-x 3 masahito staff 102 1 7 19:11 Versions/
要するにシンボリックリンクが張られていないのだ。ProKitUpdate6.0.1同様にシンボリックリンクを貼り直したところ、無事起動した。
これまで一度もProKitをインストールしたことがないMacでMacOS X 10.6.6 updateを適用した場合、iPhoto'11が動かない可能性があるようである。
2011/1/10 追記
MacOS X 10.6.6へのアップデートに、ソフトウェアアップデートを使用せずMac OS X Server v10.6.6 統合アップデートを使用すると、この問題は出ないようだ。