From: Akinori MUSHA Date: 2001-04-02T03:59:45+09:00 Subject: [ruby-dev:12721] Re: [ruby-cvs] ruby: * Makefile.in: Introduce MAINLIBS.  先ほど、 HEAD ブランチに以下のような変更を加えました。 http://www.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/ruby/Makefile.in.diff?r1=1.22&r2=1.23 http://www.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/ruby/configure.in.diff?r1=1.83&r2=1.84  これは FreeBSD 以外には影響がなく、 FreeBSD の pthread ライブラリに関連する問題の回避策として行ったものです。  その問題とは、 Ruby 本体が pthread 対応ライブラリ(libc_r)を 組み込んでいないと、拡張ライブラリが pthread 対応のライブラリを 読み込んで stdio の関数等を呼び出したときにロック機構の不整合が 起きて SEGV してしまうというものです。  調査の結果、 Ruby に最初から pthread 対応ライブラリをリンク しておけばこの問題を回避できることが確認できました。  この変更に関わらず、拡張ライブラリが橋渡しするライブラリが pthread を使っている場合は Ruby の複数スレッドで同時にその ライブラリを叩かないように注意する必要がありますので、これが 有害な方向に作用することはないと考えています。  少なくとも、これをしないと FreeBSD では Ruby/Python, Ruby/SDL, Ruby/Qt2GL などが(すべて pthread なしでコンパイルしない限り) まともに動かないので、 Ruby が pthread セーフになるまではこれで 済んでくれたらと思っているのですが。。  何か問題があったら教えてください。問題なければ、 1.6.4 の前に ruby_1_6 にも同じ変更を施したいと思います。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "We're only at home when we're on the run, on the wing, on the fly"