Bug #5688
closedSolaris10 で spawn を繰り返すとメモリリークする
Description
Solaris10 で spawn を繰り返すとメモリリークします。
Ruby は Solaris の gcc でビルドしています。32bit でも 64bit でも結果は同じでした。
1.9.2-p180(64bit), 1.9.2-p290(32bit), 1.9.3-p0(64bit) で確認しました。
再現手順は以下の通りです。
spawn-sleep.rb を以下の内容で作ります。
#!/usr/bin/env ruby
ARGV[0].to_i.times do |n|
spawn("sleep", "5")
sleep 0.2
GC.start if n % 100 == 0
end
spawn-sleep.sh を以下の内容で作ります。
#!/bin/bash
./spawn-sleep.rb 3000 &
pid=$!
echo spawn-sleep:$pid
trap "kill $pid; exit" INT TERM
count=0
while true; do
date "+%Y-%m-%d %H:%M:%S"
ps -o pid,ppid,vsz,rss,args | head -1
ps -o pid,ppid,vsz,rss,args | grep spawn-sleep.rb | grep -v grep
echo "=========="
sleep 1
done
これで spawn-sleep.sh を実行すると spawn-sleep.rb の VSZ と RSS が徐々に増えていきます。
これはメモリリークだと思うのですが、Debian(sid) では再現しませんでした。
ちなみに、spawn の部分を system に変えても同様でした。