Project

General

Profile

Bug #5688

Solaris10 で spawn を繰り返すとメモリリークする

Added by okkez (okkez _) almost 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
-
Backport:
[ruby-dev:44904]

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 に変えても同様でした。


Related issues

Related to Backport193 - Backport #5996: please backport r34033.(fix memory leak)Closedokkez (okkez _)02/10/2012Actions
Related to Backport192 - Backport #5997: please backport r34033.(fix memory leak)Closedokkez (okkez _)02/10/2012Actions

Also available in: Atom PDF