[#29170] Call for Papers Linux Conference 2001 — akira yamada / やまだあきら <akira@...>

18 messages 2001/04/10
[#30213] Re: Call for Papers Linux Conference 2001 — akira yamada / やまだあきら <akira@...> 2001/06/13

[#29190] Time Stamp Copy of File.copy — "たけ(tk)" <ggb03124@...>

 ftools.rb の move では utime を行っていて日付が同じになりますが、copy

42 messages 2001/04/11
[#29193] Re: Time Stamp Copy of File.copy — matz@... (Yukihiro Matsumoto) 2001/04/11

まつもと ゆきひろです

[#29201] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/11

たけ(tk)です。

[#29203] Re: Time Stamp Copy of File.copy — WATANABE Hirofumi <eban@...> 2001/04/11

わたなべです.

[#29212] Re: Time Stamp Copy of File.copy — Minero Aoki <aamine@...> 2001/04/12

あおきです。

[#29215] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/12

たけ(tk)です。

[#29220] Re: Time Stamp Copy of File.copy — Minero Aoki <aamine@...> 2001/04/12

あおきです。

[#29234] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/13

たけ(tk)です。

[#29236] Re: Time Stamp Copy of File.copy — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#29238] Array#include! — " たけ (tk)" <ggb03124@...> 2001/04/13

たけ(tk)です。

[#29244] Re: Array#include! — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#29348] Open3 — NISHIO Mizuho <mzh@...>

どうも西尾です。

16 messages 2001/04/20

[#29397] rnet.rb 〜高レベルネットライブラリ〜 — rubikitch <rubikitch@...>

るびきちです。

11 messages 2001/04/24

[ruby-list:29231] Re: Ruby プロセスが肥大化していく

From: "K.Kosako" <kosako@...>
Date: 2001-04-13 06:47:49 UTC
List: ruby-list #29231
Sakae Kobayashiさんの<20010413000214J.sakae@ps.ksky.ne.jp>から
> 提示したスクリプトの他に同様な例として、スレッドを使ってTCPでの
> データ授受を行うものも利用してますが、まれにメモリーがアロケート
> 出来ないと言われて落ちたり、場合によってはセグメントフォルトで
> 亡くなってしまう事もあります。こちらは、確実に発生する訳ではない
> ので、尻尾をつかみきれていません。

Rubyのスレッド機能にメモリリークがあり、
timeout.rbがThreadを使用していることが原因ですね。

単純化するため、UDPSocketを使用しないように変更した
以下のスクリプトを実行させてみると、[ruby-list:29228]の
パッチを当てていない場合は肥大化していきますが、
パッチを当てた場合は、肥大化しませんでした。
(10分程度しか見ていませんが)

以下のスクリプトで、timeout(2)の呼び出しだけを
外しても、肥大化は起こらなくなります。

require 'timeout'

id_begin = 'A000'
id_end   = 'Z999'

def run(s, id)
  rdata=''
  timeout(2) {
    s.send
    rdata = s.recv
  }
  rdata
end

#### main ############
s = Object.new
id = id_begin.dup
cnt = err = 0

class << s
  def send(); end
  def recv(); "a"; end
end

begin
        loop do
                cnt += 1
                val = run(s,id)
                puts Time.now().to_s + " " + val
                if id == id_end
                        id = id_begin.dup
                else
                        id.succ!
                end
        end
rescue TimeoutError
        err += 1
        puts "TIMEOUT " + Time.now().to_s + " " + err.to_s + "/" + cnt.to_s
        retry
end
----
小迫@ソフネック   渋谷区恵比寿1-15-1

In This Thread