ご無沙汰しております。
最近の ruby 1.8 で、以下のようなスクリプトで double free が起きて
います。プラットフォームは FreeBSD 4.10-STABLE 及び 5.3-STABLE です。
1.8.2-preview2 までは発生せず、間はわかりませんが 1.8.2-preview3
以降は発生しています。
knu@daemon[2]% cat test.rb
require 'dl/import'
module LIBC
PATH_MAX = 1024
extend DL::Importable
dlload "libc.so"
extern "char *realpath(char *, char *)"
end
def File.realpath(path)
return LIBC.realpath(path[0...(LIBC::PATH_MAX - 1)],
"\0" * LIBC::PATH_MAX) || File.expand_path(path)
end
p File.realpath("/home/knu/tmp/foo")
knu@daemon[2]% ruby test.rb
ruby in free(): warning: chunk is already free
"/home/knu/tmp/bar"
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"It seems to me as we make our own few circles 'round the sun
We get it backwards and our seven years go by like one"