[#40961] [Bug #3137] complex.rb changes exceptions of Math — Yusuke Endoh <redmine@...>

Bug #3137: complex.rb changes exceptions of Math

15 messages 2010/04/12
[#40967] Re: [Bug #3137] complex.rb changes exceptions of Math — keiju@... (石塚圭樹) 2010/04/13

けいじゅ@いしつかです.

[#41038] Windows と DL が使用条件の libffi — Aaron Patterson <aaron.patterson@...>

こんにちは!アーロンです。

17 messages 2010/04/22
[#41039] Re: Windows と DL が使用条件の libffi — "U.Nakamura" <usa@...> 2010/04/22

こんにちは、なかむら(う)です。

[#41040] Re: Windows と DL が使用条件の libffi — "NARUSE, Yui" <naruse@...> 2010/04/22

成瀬です。

[#41059] Re: Windows と DL が使用条件の libffi — Aaron Patterson <aaron.patterson@...> 2010/04/26

2010/4/21 NARUSE, Yui <naruse@airemix.jp>:

[#41060] Re: Windows と DL が使用条件の libffi — Yugui <yugui@...> 2010/04/26

2010/4/26 Aaron Patterson <aaron.patterson@gmail.com>:

[#41067] [Feature #3203] LazySweepGC patch — Narihiro Nakamura <redmine@...>

Feature #3203: LazySweepGC patch

15 messages 2010/04/26
[#41069] Re: [Feature #3203] LazySweepGC patch — Yusuke ENDOH <mame@...> 2010/04/27

遠藤です。

[#41104] Rails3 M17N — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

29 messages 2010/04/30
[#41111] Re: Rails3 M17N — Urabe Shyouhei <shyouhei@...> 2010/04/30

Yukihiro Matsumoto =E3=81=95=E3=82=93=E3=81=AF=E6=9B=B8=E3=81=8D=E3=81=BE=

[#41113] Re: Rails3 M17N — Yukihiro Matsumoto <matz@...> 2010/04/30

まつもと ゆきひろです

[ruby-dev:40939] Re: [Bug:trunk] Dir.[] returns unmatched path

From: Masaya TARUI <tarui@...>
Date: 2010-04-09 10:08:26 UTC
List: ruby-dev #40939
樽家といいます。

dir.cにおいて、ruby_brace_expand関数のstrがwhile(p<rbrace)ループ内の途中で壊れて
不定になるのが直接の原因でした。
GCが起きると壊れるので、潜在的に問題のあった環境では、
100.times{
a= Dir["#{dir}{ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,ext,win32}/**/*.rb"].sort

p [a.select{|i| i=~/win32/}.size,a.size,a[0]]
}
とかするとSEGVを含めおかしな結果を出すと思います。


元をたどればpush_glob関数内でRSTRING_PTR(str)を渡しているのに、
strがGCでmarkされずに回収されるためなので、

以下のpatch(IRCで教えてもらったpatchですが)で直る事を確認しました。

#GC怖い


>svn diff dir.c
Index: dir.c
===================================================================
--- dir.c       (リビジョン 27267)
+++ dir.c       (作業コピー)
@@ -1622,14 +1622,17 @@
 {
     struct glob_args args;
     rb_encoding *enc = rb_enc_get(str);
+    int ret;

     if (enc == rb_usascii_encoding()) enc = rb_filesystem_encoding();
     args.func = push_pattern;
     args.value = ary;
     args.enc = enc;
-
-    return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE,
-                           rb_glob_caller, (VALUE)&args, enc);
+
+    ret = ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE,
+                          rb_glob_caller, (VALUE)&args, enc);
+    RB_GC_GUARD(str);
+    return ret;
 }

 static VALUE



2010年2月27日13:35 U.Nakamura <usa@garbagecollect.jp>:
> こんにちは、なかむら(う)です。
>
> In message "[ruby-dev:40518] Re: [Bug:trunk] Dir.[] returns unmatched path"
>    on Feb.27,2010 13:17:21, <mame@tsg.ne.jp> wrote:
>> > ところで、ruby -v(というかリビジョン)は?
>>
>> あ、すみません。
>>
>> $ ./ruby -v t.rb
>> ruby 1.9.2dev (2010-02-26) [i386-mingw32]
>> "C:/Ruby/ruby/"
>>
>> です。
>
> ふうむ、ちなみにこちらでは2010-02-08でも大丈夫でした。
>
>
>> 不思議なことに miniruby だとちゃんと動きました。
>>
>> $ ./miniruby.exe -v t.rb
>> ruby 1.9.2dev (2010-02-26) [i386-mingw32]
>> "C:/Ruby/ruby/ext/bigdecimal/extconf.rb"
>
> なにそれこわい。
>
> minirubyとrubyでglobに違いはないような... ...
> あ、ありました。encoding絡み。
> でもシステムから取ってるからやっぱり同じ結果になるような気も
> するんだけどなあ。
>
>
> それでは。
> --
> U.Nakamura <usa@garbagecollect.jp>
>
>
>

--
Masaya TARUI
mailto: tarui@prx.jp

In This Thread