From: okkez _ <redmine@...> Date: 2011-12-14T00:41:11+09:00 Subject: [ruby-dev:44986] [ruby-trunk - Bug #5688] Solaris10 で spawn を繰り返すとメモリリークする Issue #5688 has been updated by okkez _. Assignee changed from Yukihiro Matsumoto to okkez _ コミット権を頂いたので担当を変更します。 ---------------------------------------- Bug #5688: Solaris10 で spawn を繰り返すとメモリリークする http://redmine.ruby-lang.org/issues/5688 Author: okkez _ Status: Assigned Priority: Normal Assignee: okkez _ Category: core Target version: 2.0.0 ruby -v: - 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 に変えても同様でした。 -- http://redmine.ruby-lang.org