きりかノート 3冊め

おあそびプログラミング

作業メモ ruby-1.9.2/1.9.3のtest-allが途中で止まることがある

(2011-11-04 追記 port:libffi-3.0.10_1で解決しました => http://d.hatena.ne.jp/kimuraw/20111102/p1

途中経過だけどちょっと時間おいてリトライするつもりなので記録。うっかり検索で当たってしまった人とかは状況教えてもらえるとうれしいです。

Lionにしてからだと思うのだけど、ruby-1.9.[23]のmake test-allが

 DL::TestCPtr#test_plus = 0.00 s = .
 DL::TestCPtr#test_ref_ptr = 0.00 s = .
 DL::TestCPtr#test_size = 0.00 s = .
 DL::TestCPtr#test_size= = 0.00 s = .
 DL::TestCPtr#test_to_ptr_io = 0.05 s = .
 DL::TestCPtr#test_to_ptr_string = 0.00 s = .
 DL::TestCPtr#test_to_ptr_with_num = 0.00 s = .
 DL::TestCPtr#test_to_ptr_with_ptr = 0.00 s = .
 DL::TestCPtr#test_to_s = 0.00 s = .
 DL::TestCPtr#test_to_str = 0.00 s = .
 DL::TestCPtr#test_to_value = 0.00 s = .
 DL::TestCallback#test_call_callback =

と、dlモジュールのコールバックのテストで止まってしまう。はじめはucontextがなくなったせいかなーとも思ったりしてたんだけど、fiddleのテストを流すと"[BUG] Bus Error"にもなったりなので、MacPortsのport:libffiをdeactivateしてLionの標準のlibffiを使うようにしてみたら通った。

で、いろいろ試していたらlibffiをclangやgcc-4.2でビルドしてみるとうまくいったみたい。注:今は再現しない…どういうこと?

で、コンパイラを変えてlibffiをビルドして、libffiのテスト結果がllvm-gcc以外のほうがいいなら「問題あるからコンパイラ変更するね!」と言いやすいよなーと思ってテストしてみた。

libffiのmake checkの結果

環境

手順

  1. -kオプションつけてインストール
  2. cd `port work libffi`/libffi-3.0.10 && chown -R ${USER} .
  3. make check

llvm-gcc-4.2

	  === libffi Summary ===

 # of expected passes            1621
 # of unexpected failures        13
 # of unsupported tests          15
 make[3]: *** [check-DEJAGNU] Error 1
 make[2]: *** [check-am] Error 2
 make[1]: *** [check-recursive] Error 1
 make: *** [check] Error 2
 make check  30.76s user 28.65s system 49% cpu 2:01.17 total

clang (Xcode 4.1) - Apple clang version 2.1 (tags/Apple/clang-163.7.1)

	  === libffi Summary ===

 # of expected passes            1621
 # of unexpected failures        13
 # of unsupported tests          15
 make[3]: *** [check-DEJAGNU] Error 1
 make[2]: *** [check-am] Error 2
 make[1]: *** [check-recursive] Error 1
 make: *** [check] Error 2
 make check  30.29s user 26.25s system 82% cpu 1:08.93 total

gcc-4.2

	  === libffi Summary ===

 # of expected passes            1621
 # of unexpected failures        13
 # of unsupported tests          15
 make[3]: *** [check-DEJAGNU] Error 1
 make[2]: *** [check-am] Error 2
 make[1]: *** [check-recursive] Error 1
 make: *** [check] Error 2
 make check  30.92s user 28.18s system 56% cpu 1:44.70 total

同じやん!