[#27638] tcltkstub cause SEGV — KIMURA Koichi <kbk@...>
木村です。
なかだです。
山本です。
[#27651] [TIPS] .ext へのコピーの負荷低減 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
なかだです。
山本です。
[#27663] refactored shellwords.rb has bug? — KIMURA Koichi <kimura.koichi@...>
木村です。
[#27666] patch for Makefile.in — Takahiro Kambe <taca@...>
pkgsrcの方で、Min Sik Kim氏により加えられた変更です。
[#27674] Numeric#div — Koji Arai <jca02266@...>
新井です。お久しぶりです。
[#27680] patch for BeOS (HEAD) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
山本です。
In article <20051111081454.EDF9CD78.ocean@m2.ccsnet.ne.jp>,
山本です。
[#27695] trap & sleep doens't work on windows HEAD. — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#27711] Re: [ruby-list:41557] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
小西 弘将です。
こんにちは、なかむら(う)です。
山本です。
[#27729] Thread deadlock when signale handler raise exception — Tatsuki Sugiura <sugi@...>
こんにちは。杉浦です。
[#27735] FNM_CASEFOLD on case-sensitive system — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
山本です。
山本です。
なかだです。
なかだです。
山本です。
なかだです。
山本です。
[#27738] File.split("A:a/b") and File.split("A://///") on mswin32 — Tanaka Akira <akr@...17n.org>
ちょっと調べていて気がついたのですが、
こんにちは、なかむら(う)です。
[#27754] ruby-mode の emacs 収録 — Seiji Zenitani <zenitani@...>
はじめて投稿します。
[#27758] File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org>
次に cygwin における
こんにちは、なかむら(う)です。
In article <20051121093604.3A67.USA@garbagecollect.jp>,
こんにちは、なかむら(う)です。
わたなべです。
In article <1191-Mon21Nov2005112905+0900-eban@os.rim.or.jp>,
こんにちは、なかむら(う)です。
In article <20051121120453.3A70.USA@garbagecollect.jp>,
In article <87ek5a665s.fsf@m17n.org>,
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
In article <20051121191101.3A88.USA@garbagecollect.jp>,
[#27766] 1.8.4 preview2? — "URABE Shyouhei aka.mput" <root@...>
卜部です。間が空きましたが
まつもと ゆきひろです
なかだです。
[#27818] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
[#27825] 1.8.4 preview test failed (soap/ssl/test_ssl.rb) — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#27836] autoload with const_missing — SASADA Koichi <ko1@...>
ささだです。
[#27839] ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org>
最近、boron でやっている chkbuild で ruby-1.8 が test-all 中
山本です。
In article <20051128190225.14D66C20.ocean@m2.ccsnet.ne.jp>,
In article <20051130210645.7228E2B0.ocean@m2.ccsnet.ne.jp>,
山本です。
In article <20051219120911.F876DDD0.ocean@m2.ccsnet.ne.jp>,
山本です。
山本です。
In article <20051219203218.8E517368.ocean@m2.ccsnet.ne.jp>,
まつもと ゆきひろです
[#27846] parser_params heap — Tanaka Akira <akr@...17n.org>
struct parser_params の heap ですが、Ripper のときとそうでな
[#27851] tail call and conservertive GC — Tanaka Akira <akr@...17n.org>
x86_64-linux で、gcc 4.0.3 20051111 なるものを用いて ruby
なかだです。
In article <TYOMLEM04FRaqbC8wSA0000003d@tyomlvem02.e2k.ad.ge.com>,
[#27871] Numeric と Complex — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
05/11/30 に 石塚圭樹<keiju@ishitsuka.com> さんは書きました:
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
うらべです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
[#27890] rb_funcall2() for protected method — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
まつもと ゆきひろです
[ruby-dev:27856] Re: tail call and conservertive GC
なかだです。
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はできる。
中田 伸悦