=begin
遠藤です。
2009年9月9日12:57 Tanaka Akira akr@fsij.org:
このテストを取り入れた後、test-all が SEGV するようになっています。
http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20090908T095209.log.txt.gz
test/dl/test_cptr.rb だけでも再現するようです。
ruby_xmalloc で確保した領域を、libc の free で解放することは許される
のでしょうか。dynamic loading の仕様が許すかどうかはわかりませんが、
少なくとも ruby としては ruby_xfree で解放することを意図していると
思います。
落ちる原因がそれかどうかはわかりませんが、このテストはそういうことを
しています。
CPtr の free に ruby_xfree を与えれば動くかもしれませんが、free には
ruby_xfree しか与えられないので、free の存在意義がありません。
CPtr.malloc は作成中の残骸か何かで、使えないのではないかと思います。
結論を言うと CPtr.malloc は使用禁止、もしくは仕様レベルからの修正が
必要だと思います。
したがって、CPtr.malloc のドキュメントをはずすことを提案します。
互換性が許すならば CPtr.malloc 自体を消した方がいいと思います。
ちなみに CPtr.new は問題なく使えそうです。ただし、free を割り当てる
場合は同じ領域に複数の CPtr を作ってはいけないというルールがあると
思います。このルールは rdoc に明記されるべきだと思います。
--
Yusuke ENDOH mame@tsg.ne.jp
=end