[#39420] Marshal.load で例外発生時に Segmentation fault エラー — patamanta@...
金田有二と申します。
5 messages
2009/10/02
[#39421] exception from open-uri — Yusuke ENDOH <mame@...>
遠藤です。
5 messages
2009/10/03
[#39439] [Bug #2179] 1.9.2において block のスコープがおかしいときがある — 益隆 三村 <redmine@...>
Bug #2179: 1.9.2において block のスコープがおかしいときがある
4 messages
2009/10/06
[#39446] Is the maintainer discharging rule approved? and about matrix.rb — Yugui <yugui@...>
Yuguiです。
4 messages
2009/10/08
[#39451] getaddrinfo: Name or service not known (SocketError) in net/ftp — Tanaka Akira <akr@...>
boron で気がついたのですが、net/ftp で login のときに
4 messages
2009/10/09
[#39469] Re: getaddrinfo: Name or service not known (SocketError) in net/ftp
— Shugo Maeda <shugo@...>
2009/10/12
前田です。
[#39453] [BUG: trunk] GC mark bug — SASADA Koichi <ko1@...>
ささだです.
7 messages
2009/10/10
[#39501] [bug:trunk] invalid memory access in 100**900 — Tanaka Akira <akr@...>
以下のように、100**900 を計算すると変なところをアクセスするようです。
4 messages
2009/10/17
[#39506] [Bug:1.9] case 文の式が省略され when 節に配列展開があるときの挙動 — wanabe <s.wanabe@...>
ワナベと申します。
4 messages
2009/10/17
[#39533] [Bug #2263] typo in man/ruby.1 — Narihiro Nakamura <redmine@...>
Bug #2263: typo in man/ruby.1
11 messages
2009/10/24
[#39534] Re: [Bug #2263] typo in man/ruby.1
— Yusuke ENDOH <mame@...>
2009/10/24
遠藤です。
[#39548] [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる — Akira Matsuda <redmine@...>
Bug #2291: Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる
10 messages
2009/10/27
[#39578] [Bug #2308] セーフレベル1の場合、Net::IMAPでSecurityErrorが発生する — Nozomu Kurasawa <redmine@...>
Bug #2308: セーフレベル1の場合、Net::IMAPでSecurityErrorが発生する
5 messages
2009/10/30
[#39579] [Bug #2310] should ensure GVL_UNLOCK_END in rb_thread_blocking_region — _ wanabe <redmine@...>
Bug #2310: should ensure GVL_UNLOCK_END in rb_thread_blocking_region
4 messages
2009/10/30
[#39584] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect — Nobuyoshi Nakada <nobu@...>
なかだです。
6 messages
2009/10/30
[#39585] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39589] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39591] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Nobuyoshi Nakada <nobu@...>
2009/10/30
なかだです。
[#39592] infinite recursive call to C function — Yusuke ENDOH <mame@...>
遠藤です。
17 messages
2009/10/30
[#39596] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39599] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39601] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39602] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39603] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39605] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39608] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39609] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39610] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[ruby-dev:39592] infinite recursive call to C function
From:
Yusuke ENDOH <mame@...>
Date:
2009-10-30 12:46:20 UTC
List:
ruby-dev #39592
遠藤です。
[ruby-core:24794] と似たような問題を探してみましたが、かなりありそうです。
$ ./ruby -e '
class Symbol
include Enumerable
alias to_enum zip
end
:each.zip(:each) { }
'
Segmentation fault
$ ruby19 -e '
class Hash
alias default []
end
{}[1]
'
Segmentation fault
$ ruby19 -e '
class Object
alias to_open open
public :to_open
end
o = Object.new
eval("open(#{ (["o"] * 10000).join(",") })") # open(o, o, o, o, ...)
'
Segmentation fault
$ ruby19 -e '
class Time
def to_str
end
end
Time.now <=> ""
'
Segmentation fault
matz ruby では、この手のバグはちまちまと潰していくということで
いいのでしょうか。
最後のは相互再帰するので rb_funcall_no_recursive では救えそうに
ありません。<=> での相互再帰は多分結構ありそうですが、どうしま
しょう。
Index: enum.c
===================================================================
--- enum.c (revision 25576)
+++ enum.c (working copy)
@@ -1745,7 +1745,11 @@
if (!allary) {
CONST_ID(conv, "to_enum");
for (i=0; i<argc; i++) {
- argv[i] = rb_funcall(argv[i], conv, 1, ID2SYM(id_each));
+ VALUE sym = ID2SYM(id_each);
+ argv[i] = rb_funcall_no_recursive(argv[i], conv, 1, &sym, enum_zip);
+ if (argv[i] == Qundef) {
+ rb_raise(rb_eRuntimeError, "recursive call to Enumerable#zip");
+ }
}
}
if (!rb_block_given_p()) {
Index: io.c
===================================================================
--- io.c (revision 25576)
+++ io.c (working copy)
@@ -5589,7 +5589,10 @@
}
}
if (redirect) {
- VALUE io = rb_funcall2(argv[0], to_open, argc-1, argv+1);
+ VALUE io = rb_funcall_no_recursive(argv[0], to_open, argc-1, argv+1,
rb_f_open);
+ if (io == Qundef) {
+ rb_raise(rb_eRuntimeError, "recursive call to Kernel#open");
+ }
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
Index: hash.c
===================================================================
--- hash.c (revision 25576)
+++ hash.c (working copy)
@@ -494,7 +494,11 @@
VALUE val;
if (!RHASH(hash)->ntbl || !st_lookup(RHASH(hash)->ntbl, key, &val)) {
- return rb_funcall(hash, id_default, 1, key);
+ VALUE ret = rb_funcall_no_recursive(hash, id_default, 1, &key, rb_hash_aref);
+ if (ret == Qundef) {
+ rb_raise(rb_eRuntimeError, "recursive call to Hash#[]");
+ }
+ return ret;
}
return val;
}
--
Yusuke ENDOH <mame@tsg.ne.jp>