From: "NAKAMURA, Hiroshi" Date: 2003-03-25T13:00:07+09:00 Subject: [ruby-dev:19899] Re: Proc#call parameter assignment なひです。 > From: Yukihiro Matsumoto [mailto:matz@ruby-lang.org] > Sent: Tuesday, March 25, 2003 12:55 PM > |とあるruby 1.8.0環境で、以下のような現象が生じています。 > | > | f = lambda { |block-arg| > | p block-arg #=> [[obj1, obj2]] > | ... > | } > | arg = [obj1, obj2] > | f.call(arg) > | > |debug.rbで捕まえながら見ていると、f.callの前と > |lambdaの中で、[]が一つ増えてしまう時があります。 > | > |# 具体的には、↑の...のところでbreakして、p argとp block-argを > |# したときに、[]の数が違う時がありました。 > | > |実際は↑のような簡単なコード片では発生しませんし、また、発生する環境で > も、 > |このコードを通るところで必ず発生する *というわけではない* のですが、 > |起きるパターン(argとして与えるデータや呼び出し元)では、 > |100%発生します。RedHat/7.3でもcygwinでも、同じパターンで発生します。 > > うーん、 > > Thu Mar 20 10:45:29 2003 Tanaka Akira > > * eval.c (bmcall): add volatile to avoid GC problem. > > が関係するような気が。これより古い1.8.0ですか? これよりは新しいです。具体的には、昨晩日本時間22時頃に cvs updateしたもので発生しました。 それ以前は現象が発生していなかったのですが、その「以前のruby/1.8」が、 いつの日付のrubyだったかはわかりません。最も古くて3月頭、 おそらくそれ以後で、3月15日よりは前だと思います。