2004-09-18 (Sat)
_ [Ruby][mod_ruby] search-namazuとENV
mod_rubyを使わなくても、以下のスクリプトで落ちることを確認。
require "search/namazu"
VAL = "x" * 100
(1..100).each do |i|
p i
("A00".."A99").each do |name|
ENV[name] = VAL
end
result = Search::Namazu.search("ruby", ["/home/shugo/tmp/index"])
10000.times {
Object.new
}
ENV.clear
end
ちょっと条件を変えるとささったりする。
どうもlibnmzのnmz_set_lang()でsetenv()を使っているのが原因のようだ。 RubyのENVの実装って、拡張ライブラリなどでsetenv()を使わないことを 前提にしていたような気がする。
試しに以下のようにnmz_set_lang()をruby_setenv()で置き換えると 落ちなくなるようだ。
--- namazu.c.orig 2004-09-19 01:21:14.000000000 +0900
+++ namazu.c 2004-09-19 01:35:42.000000000 +0900
@@ -301,7 +301,7 @@ static void process_lang(VALUE lang)
if(!NIL_P(lang))
slang = StringValuePtr(lang);
- nmz_set_lang(slang);
+ ruby_setenv("LANG", slang);
}
static VALUE process_fields(VALUE fields)
うーん、どうしたもんだか。
[ツッコミを入れる]
[TrackBack URL: http://shugo.net/jit/tb.rb/20040918]
本日のリンク元
- http://search.live.com/results.aspx?q=namazu&mrt=e... ×5
- http://reader.livedoor.com/reader/ ×5
- http://search.live.com/results.aspx?q=namazu&form=... ×3
- http://mixi.jp/view_diary.pl?url=http://shugo.net/... ×3
- http://search.live.com/results.aspx?q=namazu ×2
- http://mixi.jp/new_friend_diary.pl ×2
- http://209.85.175.104/search?q=cache:Rp-jRQ8o7DkJ:... ×1
- http://www.pop-wd.com/pop/A00/ ×1
- http://namazu.org/~satoru/diary/20030421.html ×1
- http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=v... ×1
- http://overthewall.jp/~tyv/freshreader/feedshowcat... ×1
