yarv-dev:1095
From: Tadashi Saito <shiba mail2.accsnet.ne.jp>
Date: Wed, 25 Oct 2006 00:15:20 +0900
Subject: [yarv-dev:1095] segv when stack level is too deep
こんばんは、斎藤です。 当方以下のような環境です。 $ ruby-yarv -v ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [i686-linux] YARVCore 0.4.1 Rev: 545 (2006-09-01) [opts: [direct threaded code] [inline method cache] ] そこで以下のようなプログラムを走らせると、 $ cat evalself.rb eval File.read($0) $ ruby-yarv evalself.rb # 略 落ちました。出て来たメッセージは本当に長くて単調なので、略して引用します。 まず最初はこんな感じです。 (eval):1: -- stack frame ------------ 0000 (0x40366008): 00000004 0001 (0x4036600c): 00000005 0002 (0x40366010): 00000004 0003 (0x40366014): 00000001 <- lfp 0004 (0x40366018): 403642d8 0005 (0x4036601c): 4033ca08 0006 (0x40366020): 00000004 0007 (0x40366024): 00000001 0008 (0x40366028): 00000004 0009 (0x4036602c): 00000001 0010 (0x40366030): 40366015 (= 3) 0011 (0x40366034): 403642d8 0012 (0x40366038): 4033c88c 0013 (0x4036603c): 00000004 0014 (0x40366040): 00000001 0015 (0x40366044): 00000004 0016 (0x40366048): 00000001 0017 (0x4036604c): 40366031 (= 10) 0018 (0x40366050): 403642d8 0019 (0x40366054): 4033c710 0020 (0x40366058): 00000004 0021 (0x4036605c): 00000001 0022 (0x40366060): 00000004 0023 (0x40366064): 00000001 0024 (0x40366068): 4036604d (= 17) 0025 (0x4036606c): 403642d8 0026 (0x40366070): 4033c594 0027 (0x40366074): 00000004 0028 (0x40366078): 00000001 0029 (0x4036607c): 00000004 0030 (0x40366080): 00000001 0031 (0x40366084): 40366069 (= 24) 0032 (0x40366088): 403642d8 0033 (0x4036608c): 4033c418 0034 (0x40366090): 00000004 0035 (0x40366094): 00000001 0036 (0x40366098): 00000004 0037 (0x4036609c): 00000001 0038 (0x403660a0): 40366085 (= 31) 0039 (0x403660a4): 403642d8 0040 (0x403660a8): 4033c29c 0041 (0x403660ac): 00000004 0042 (0x403660b0): 00000001 0043 (0x403660b4): 00000004 0044 (0x403660b8): 00000001 似たようなものが16000回以上続きます。stack frameの最後はこうです。 16657 (0x4037644c): 403642d8 16658 (0x40376450): 4043cb9c 16659 (0x40376454): 00000004 16660 (0x40376458): 00000001 16661 (0x4037645c): 00000004 16662 (0x40376460): 00000001 16663 (0x40376464): 40376449 (= 16656) 16664 (0x40376468): 403642d8 16665 (0x4037646c): 4043ca20 16666 (0x40376470): 00000004 16667 (0x40376474): 00000001 16668 (0x40376478): 00000004 16669 (0x4037647c): 00000001 16670 (0x40376480): 40376465 (= 16663) 16671 (0x40376484): 403642d8 16672 (0x40376488): 00000000 16673 (0x4037648c): 403764b4 16674 (0x40376490): 403764b4 16675 (0x40376494): 00000000 16676 (0x40376498): faffff61 16677 (0x4037649c): 4035754c <- dfp 16678 (0x403764a0): 403764b0 <- bp 16679 (0x403764a4): 4043c728 続いてcontrol frame。 -- control frame ---------- c:7149 p:0022 s:16680 b:16678 l:000003 d:006677 EVAL (eval):1 c:7148 p:---- s:16677 b:16677 l:006676 d:006676 FINISH c:7147 p:---- s:16675 b:16675 l:006674 d:006674 CFUNC :eval c:7146 p:0022 s:16671 b:16671 l:000003 d:006670 EVAL (eval):1 c:7145 p:---- s:16670 b:16670 l:006669 d:006669 FINISH c:7144 p:---- s:16668 b:16668 l:006667 d:006667 CFUNC :eval c:7143 p:0022 s:16664 b:16664 l:000003 d:006663 EVAL (eval):1 c:7142 p:---- s:16663 b:16663 l:006662 d:006662 FINISH c:7141 p:---- s:16661 b:16661 l:006660 d:006660 CFUNC :eval c:7140 p:0022 s:16657 b:16657 l:000003 d:006656 EVAL (eval):1 c:7139 p:---- s:16656 b:16656 l:006655 d:006655 FINISH c:7138 p:---- s:16654 b:16654 l:006653 d:006653 CFUNC :eval c:7137 p:0022 s:16650 b:16650 l:000003 d:006649 EVAL (eval):1 c:7136 p:---- s:16649 b:16649 l:006648 d:006648 FINISH c:7135 p:---- s:16647 b:16647 l:006646 d:006646 CFUNC :eval c:7134 p:0022 s:16643 b:16643 l:000003 d:006642 EVAL (eval):1 c:7133 p:---- s:16642 b:16642 l:006641 d:006641 FINISH c:7132 p:---- s:16640 b:16640 l:006639 d:006639 CFUNC :eval c:7131 p:0022 s:16636 b:16636 l:000003 d:006635 EVAL (eval):1 c:7130 p:---- s:16635 b:16635 l:006634 d:006634 FINISH c:7129 p:---- s:16633 b:16633 l:006632 d:006632 CFUNC :eval c:7128 p:0022 s:16629 b:16629 l:000003 d:006628 EVAL (eval):1 それの最後はこうです(やっぱり意味ないかも)。 c:0023 p:---- s:0052 b:0052 l:000051 d:000051 FINISH c:0022 p:---- s:0050 b:0050 l:000049 d:000049 CFUNC :eval c:0021 p:0022 s:0046 b:0046 l:000003 d:000045 EVAL (eval):1 c:0020 p:---- s:0045 b:0045 l:000044 d:000044 FINISH c:0019 p:---- s:0043 b:0043 l:000042 d:000042 CFUNC :eval c:0018 p:0022 s:0039 b:0039 l:000003 d:000038 EVAL (eval):1 c:0017 p:---- s:0038 b:0038 l:000037 d:000037 FINISH c:0016 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC :eval c:0015 p:0022 s:0032 b:0032 l:000003 d:000031 EVAL (eval):1 c:0014 p:---- s:0031 b:0031 l:000030 d:000030 FINISH c:0013 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC :eval c:0012 p:0022 s:0025 b:0025 l:000003 d:000024 EVAL (eval):1 c:0011 p:---- s:0024 b:0024 l:000023 d:000023 FINISH c:0010 p:---- s:0022 b:0022 l:000021 d:000021 CFUNC :eval c:0009 p:0022 s:0018 b:0018 l:000003 d:000017 EVAL (eval):1 c:0008 p:---- s:0017 b:0017 l:000016 d:000016 FINISH c:0007 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC :eval c:0006 p:0022 s:0011 b:0011 l:000003 d:000010 EVAL (eval):1 c:0005 p:---- s:0010 b:0010 l:000009 d:000009 FINISH c:0004 p:---- s:0008 b:0008 l:000007 d:000007 CFUNC :eval c:0003 p:0022 s:0004 b:0004 l:000003 d:000003 TOP evalself.rb:1 c:0002 p:---- s:0002 b:0002 l:000001 d:000001 FINISH c:0001 p:---- s:0000 b:-001 l:000000 d:000000 ------ あとは DBG> : "(eval):1:in `eval'" DBG> : "(eval):1:in `<main>'" が4700行以上繰り返されて、ほんとの最後が DBG> : "(eval):1:in `eval'" DBG> : "(eval):1:in `<main>'" DBG> : "evalself.rb:1:in `eval'" DBG> : "evalself.rb:1:in `<main>'" [BUG] Segmentation fault ruby 2.0.0 (2006-04-08) [i686-linux] でした。 # 無駄ならほんとごめんなさい ただ見てのとおりtrunkの方なので、parallelの方では関係ないかもしれません。 しかしparallelのmakeが通らないため、ちょっと確認できませんでした。 もし必要ならば、また後で試してみます。とりあえず報告させてもらいました。 -- 斎藤ただし -- ML: yarv-dev quickml.atdot.net Info: http://www.atdot.net/~ko1/quickml
-> 1095 2006-10-25 00:15 [shiba mail2.accsnet.] segv when stack level is too deep 1096 2006-10-25 00:30 ┣[shiba mail2.accsnet.] 1098 2006-11-04 12:42 ┗[ko1 atdot.net ] 1099 2006-11-04 17:45 ┣[shudo computer.org ] 1100 2006-11-04 17:53 ┃┗[ko1 atdot.net ] 1101 2006-11-04 20:34 ┃ ┗[shudo computer.org ] 1102 2006-11-04 20:49 ┃ ┗[ko1 atdot.net ] 1103 2006-11-09 19:32 ┗[shiba mail2.accsnet.]