[#27711] Re: [ruby-list:41557] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...>

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

16 messages 2005/11/15
[#27717] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27718] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

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

[#27719] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27720] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

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

[#27721] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27722] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

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

[#27723] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 小西 弘将 <konishih@...6.so-net.ne.jp> 2005/11/16

 小西 弘将です。

[#27735] FNM_CASEFOLD on case-sensitive system — nobuyoshi nakada <nobuyoshi.nakada@...>

なかだです。

15 messages 2005/11/18
[#27737] Re: FNM_CASEFOLD on case-sensitive system — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/18

山本です。

[#27758] File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org>

次に cygwin における

26 messages 2005/11/19
[#27768] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27769] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121093604.3A67.USA@garbagecollect.jp>,

[#27770] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27771] Re: File.dirname("///foo/bar/baz/qux") on cygwin — WATANABE Hirofumi <eban@...> 2005/11/21

わたなべです。

[#27772] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <1191-Mon21Nov2005112905+0900-eban@os.rim.or.jp>,

[#27773] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27774] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121120453.3A70.USA@garbagecollect.jp>,

[#27776] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <87ek5a665s.fsf@m17n.org>,

[#27777] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27778] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27779] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27781] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27782] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

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

[#27783] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27766] 1.8.4 preview2? — "URABE Shyouhei aka.mput" <root@...>

卜部です。間が空きましたが

17 messages 2005/11/20
[#27798] Re: 1.8.4 preview2? — Yukihiro Matsumoto <matz@...> 2005/11/21

まつもと ゆきひろです

[#27818] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2005/11/25
[#27819] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — Yukihiro Matsumoto <matz@...> 2005/11/25

まつもと ゆきひろです

[#27821] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

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

[#27823] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

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

[#27839] ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org>

最近、boron でやっている chkbuild で ruby-1.8 が test-all 中

32 messages 2005/11/28
[#27862] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/28

山本です。

[#27911] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/01

In article <20051130210645.7228E2B0.ocean@m2.ccsnet.ne.jp>,

[#28046] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28048] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/19

In article <20051219120911.F876DDD0.ocean@m2.ccsnet.ne.jp>,

[#28050] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28057] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#27871] Numeric と Complex — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

37 messages 2005/11/29
[#27872] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

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

[#27873] Re: Numeric と Complex — Yukihiro Matsumoto <matz@...> 2005/11/29

まつもと ゆきひろです

[#27875] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

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

[ruby-dev:27856] Re: tail call and conservertive GC

From: nobuyoshi nakada <nobuyoshi.nakada@...>
Date: 2005-11-28 09:22:54 UTC
List: ruby-dev #27856
なかだです。

At Mon, 28 Nov 2005 16:44:31 +0900,
Tanaka Akira wrote in [ruby-dev:27851]:
> 調べてみると、
> 
> % ./miniruby -ve '10000.times { eval "" }'
> ruby 1.9.0 (2005-11-28) [x86_64-linux]
> *** glibc detected *** double free or corruption (fasttop): 0x00000000006d40c0 ***
> 
> という問題まで絞りこめ、これはどうも rb_compile_string が
> rb_parser_compile_string を tail call していて、
> 呼び出される前に VALUE volatile な vparser がスタック上から
> 消えていて、GC されちゃっているということがわかりました。

rb_parser_compile_string()のvparserもvolatileなはずですが、そっ
ちも消えてしまってるんでしょうか。

> (gdb) disassemble rb_compile_string 
> Dump of assembler code for function rb_compile_string:
> 0x000000000045f7d0 <rb_compile_string+0>:       mov    %rbx,0xffffffffffffffe8(%rsp)
> 0x000000000045f7d5 <rb_compile_string+5>:       mov    %r12,0xfffffffffffffff0(%rsp)
> 0x000000000045f7da <rb_compile_string+10>:      mov    %edx,%ebx
> 0x000000000045f7dc <rb_compile_string+12>:      mov    %r13,0xfffffffffffffff8(%rsp)
> 0x000000000045f7e1 <rb_compile_string+17>:      sub    $0x28,%rsp
> 0x000000000045f7e5 <rb_compile_string+21>:      mov    %rdi,%r13
> 0x000000000045f7e8 <rb_compile_string+24>:      mov    %rsi,%r12
> 0x000000000045f7eb <rb_compile_string+27>:      callq  0x44f400 <rb_parser_new>
> 0x000000000045f7f0 <rb_compile_string+32>:      mov    %rax,0x8(%rsp)
> 0x000000000045f7f5 <rb_compile_string+37>:      mov    0x8(%rsp),%rdi
> 0x000000000045f7fa <rb_compile_string+42>:      mov    %ebx,%ecx
> 0x000000000045f7fc <rb_compile_string+44>:      mov    %r12,%rdx
> 0x000000000045f7ff <rb_compile_string+47>:      mov    %r13,%rsi
> 0x000000000045f802 <rb_compile_string+50>:      mov    0x10(%rsp),%rbx
> 0x000000000045f807 <rb_compile_string+55>:      mov    0x18(%rsp),%r12
> 0x000000000045f80c <rb_compile_string+60>:      mov    0x20(%rsp),%r13
> 0x000000000045f811 <rb_compile_string+65>:      add    $0x28,%rsp
> 0x000000000045f815 <rb_compile_string+69>:      jmpq   0x45f6e0 <rb_parser_compile_string>
> End of assembler dump.

なんとなく%rdi,%rsi,%edx,%ecxの順にレジスタ渡ししているっぽいで
すが、vparser自体は渡されているんじゃないでしょうか。だとすれば
問題は、引数ではvolatileがついていてもメモリ上に置かれるとは限
らない、ということのような気がします。

> まぁ、tail call になるのを防止すればいいわけですが、tail
> call になっているのはここに限らずかなりある感じです。

この推測が正しければ、volatileなローカル変数に保存しておくこと
で解決しないでしょうか。


Index: node.h
===================================================================
RCS file: /cvs/ruby/src/ruby/node.h,v
retrieving revision 1.71
diff -U2 -p -r1.71 node.h
--- node.h	8 Oct 2005 09:58:23 -0000	1.71
+++ node.h	28 Nov 2005 09:18:21 -0000
@@ -354,7 +354,7 @@ VALUE rb_parser_new(void);
 VALUE rb_parser_end_seen_p(VALUE);
 
-NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
-NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
-NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
+NODE *rb_parser_compile_cstr(VALUE, const char*, const char*, int, int);
+NODE *rb_parser_compile_string(VALUE, const char*, VALUE, int);
+NODE *rb_parser_compile_file(VALUE, const char*, VALUE, int);
 
 NODE *rb_compile_cstr(const char*, const char*, int, int);
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.425
diff -U2 -p -u -r1.425 parse.y
--- parse.y	21 Nov 2005 13:51:48 -0000	1.425
+++ parse.y	28 Nov 2005 09:19:07 -0000
@@ -4643,7 +4643,8 @@ rb_compile_string(const char *f, VALUE s
 
 NODE*
-rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
+rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
 {
     struct parser_params *parser;
+    volatile VALUE self = vparser;
 
     Data_Get_Struct(vparser, struct parser_params, parser);
@@ -4664,5 +4665,5 @@ rb_compile_cstr(const char *f, const cha
 
 NODE*
-rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
+rb_parser_compile_cstr(VALUE vparser, const char *f, const char *s, int len, int line)
 {
     return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
@@ -4684,7 +4685,8 @@ rb_compile_file(const char *f, VALUE fil
 
 NODE*
-rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
+rb_parser_compile_file(VALUE vparser, const char *f, VALUE file, int start)
 {
     struct parser_params *parser;
+    volatile VALUE self = vparser;
 
     Data_Get_Struct(vparser, struct parser_params, parser);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread