新城@筑波大学情報です。

MacOSX 10.6 Snow Leopard で、JapaneseText.mdimporter
(http://8-p.info/Spotlight/JapaneseText-0.6.dmg.gz) を使おう
としたのですが、今一つ調子が悪いです。うまい使い方が分かれば
教えてください。

JapaneseText.mdimporter があると、様々な文字コードの日本語を
うまく Spotlight から検索できるようになります。

http://8-p.info/Spotlight/
http://macwiki.sourceforge.jp/wiki/index.php/Spotlight

バイナリとソースが配布されてしてバイナリは、Universal ではあ
りますが、32bit でコンパイルされています。それをそのまま動か
すと、動くようではありますが、次のようなエラーが出ます。

------------------------------------------------------------
Sep 21 13:47:32 hostname mdworker[21864]: Error loading /Library/Spotlight/JapaneseText.mdimporter/Contents/MacOS/JapaneseText:  dlopen(/Library/Spotlight/JapaneseText.mdimporter/Contents/MacOS/JapaneseText, 262): no suitable image found.  Did find:\n/Library/Spotlight/JapaneseText.mdimporter/Contents/MacOS/JapaneseText: no matching architecture in universal wrapper
------------------------------------------------------------

それではということで、ソースをコンパイルしてみとると、このエ
ラーは出なくなります。一応動くのですが、次のようにして
mdworker が SIGSEGV クラッシュします。

------------------------------------------------------------
Sep 21 16:39:37 hostname com.apple.launchd[1] (0x100501a60.mach_init.mdworker[23959]): Job appears to have crashed: Segmentation fault
Sep 21 16:39:37 hostname com.apple.ReportCrash.Root[23954]: 2010-09-21 16:39:37.621 ReportCrash[23954:3c2f] Saved crash report for mdworker[23959] version ??? (???) to /Library/Logs/DiagnosticReports/mdworker_2010-09-21-163937_localhost.crash
------------------------------------------------------------

クラッシュのログは、こんな感じ。
------------------------------------------------------------
Thread 3 Crashed:
0   ???                                 0x0000000000000001 0 + 1
1   com.apple.CoreFoundation            0x00007fff87114b7d __CFBasicHashAddValue + 877
2   com.apple.CoreFoundation            0x00007fff871146cf CFBasicHashAddValue + 191
3   mdworker                            0x00000001000068f0 0x100000000 + 26864
4   mdworker                            0x0000000100009ef1 0x100000000 + 40689
5   libSystem.B.dylib                   0x00007fff800d5456 _pthread_start + 331
6   libSystem.B.dylib                   0x00007fff800d5309 thread_start + 13

Thread 3 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000001  rbx: 0x00000001000d5760  rcx: 0x0000000000000000  rdx: 0x00007fff87157564
  rdi: 0x00000001000d5760  rsi: 0x0000000000000016  rbp: 0x0000000100702770  rsp: 0x00000001007026d8
   r8: 0x000000010050baf0   r9: 0x00000001005fc0a4  r10: 0x000000010050bb40  r11: 0x0000000000000001
  r12: 0x000000010050bb40  r13: 0x00000001000d5760  r14: 0x00000001000d5760  r15: 0x0000000000000000
  rip: 0x0000000000000001  rfl: 0x0000000000010202  cr2: 0x0000000000000001

Binary Images:
       0x100000000 -        0x10003cfff  mdworker ??? (???) <1ECEB0FE-26FE-B777-BCF5-5EE058430CF7> /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker
       0x10008c000 -        0x1000a3fe7  libJapaneseConverter.dylib 49.0.0 (compatibility 1.0.0) <1B9D1076-CC7C-521A-676C-F7BE51F65271> /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib
       0x1000d2000 -        0x1000d4ff7 +info.8-p.MDImporter.JapaneseText 0.6 (0.6) <D920184A-67FA-42A0-20A4-627EBABA9E3E> /Library/Spotlight/JapaneseText.mdimporter/Contents/MacOS/JapaneseText
    0x7fff5fc00000 -     0x7fff5fc3bdef  dyld 132.1 (???) <B536F2F1-9DF1-3B6C-1C2C-9075EA219A06> /usr/lib/dyld
...
    0x7fff87105000 -     0x7fff8727aff7  com.apple.CoreFoundation 6.6.3 (550.29) <48810602-63C3-994D-E563-DD02B16E76E1> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
------------------------------------------------------------

mdworker の 0x00000001000068f0 番地から 
CFBasicHashAddValue() を呼んで死んだという所です。これだけだ
と 0x10008c000-0x1000a3fe7 番地のJapaneseText.mdimporter と
は直接は関係ないとも言えますが、クラッシュするのは、
JapaneseText.mdimporter が絡んだ時だけなので、無関係とまでは
言えないかなあと思っています。

MacOSX 10.6 での JapaneseText.mdimporter をうまく動かす方法
について何かヒントがありましたら教えてください。

でもこういうエラーが出ても、直接的には気が付かないんですよね。
たまたま top で見ていたら crash なんとかいうのが見えて、
/Applications/Utilities/Console.app を見ると、ガンガンエラー
が出てました。Console.app ではなくて、Unix 風に
tail -f /var/log/system.log でも良いです。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\