https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2008-08-28T20:57:24Z
Ruby Issue Tracking System
Ruby master - Bug #513: Tempfile yields [BUG] Stack consistency error
https://bugs.ruby-lang.org/issues/513?journal_id=941
2008-08-28T20:57:24Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<ul></ul><p>=begin<br>
遠藤です。</p>
<p>2008/08/28 11:18 Shyouhei Urabe <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a>:</p>
<blockquote>
<p>zsh % gdb --args ~/target/trunk/bin/ruby -rtempfile -ve<br>
Tempfile.open("") do |f|<br>
f.write "\n";<br>
f.rewind;<br>
g = Tempfile.new "";<br>
f.each {break};<br>
g.rewind;<br>
end<br>
'<br>
(snip)<br>
-e:1: [BUG] Stack consistency error (sp: 16, bp: 15)<br>
(snip)</p>
</blockquote>
<p>簡単にできました。</p>
<p>$ ./ruby -e '<br>
class Foo<br>
define_method(:foo) do |&b|<br>
b.call<br>
end<br>
end</p>
<p>Foo.new.foo do<br>
break<br>
end<br>
'<br>
-e:8: [BUG] Stack consistency error (sp: 7, bp: 6)<br>
ruby 1.9.0 (2008-08-28 revision 18895) [i686-linux]</p>
<h2>-- control frame ----------<br>
c:0003 p:0032 s:0007 b:0006 l:001084 d:001084 TOP -e:8<br>
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH :private_class_method<br>
c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP :17</h2>
<h2>DBG> : "-e:8:in `'"<br>
-- backtrace of native function call (Use addr2line) --<br>
0x8112df4<br>
0x813e18e<br>
0x813e1d8<br>
0x810bc5f<br>
0x810c3a4<br>
0x810c58c<br>
0x805aa3f<br>
0x805bd46<br>
0x8058e70<br>
0xb7e21ea8<br>
0x8058d51</h2>
<p>Aborted</p>
<p>BMETHOD 中で throw する可能性があるので、BMETHOD を呼び出す前に<br>
スタックを縮めるべきかと思います。</p>
<a name="Index-vm_insnhelperc"></a>
<h1 >Index: vm_insnhelper.c<a href="#Index-vm_insnhelperc" class="wiki-anchor">¶</a></h1>
<p>--- vm_insnhelper.c (revision 18895)<br>
+++ vm_insnhelper.c (working copy)<br>
@@ -519,8 +519,8 @@<br>
}<br>
case NODE_BMETHOD:{<br>
VALUE *argv = cfp->sp - num;</p>
<ul>
<li>
<pre><code> cfp->sp += - num - 1;
val = vm_call_bmethod(th, id, node->nd_cval, recv, klass, num,
</code></pre>
</li>
</ul>
<p>argv, blockptr);</p>
<ul>
<li>
<pre><code> cfp->sp += - num - 1;
break;
}
case NODE_ZSUPER:{
</code></pre>
</li>
</ul>
<p>--<br>
Yusuke ENDOH <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p>
<p>=end</p>
Ruby master - Bug #513: Tempfile yields [BUG] Stack consistency error
https://bugs.ruby-lang.org/issues/513?journal_id=942
2008-08-28T21:45:44Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/36029">[ruby-dev:36029]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Tempfile yields [BUG] Stack consistency error (Closed)" href="https://bugs.ruby-lang.org/issues/513">#513</a>] Tempfile yields [BUG] Stack consistency error"<br>
on Thu, 28 Aug 2008 20:52:05 +0900, "Yusuke ENDOH" <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a> writes:</p>
<p>|BMETHOD 中で throw する可能性があるので、BMETHOD を呼び出す前に<br>
|スタックを縮めるべきかと思います。<br>
|<br>
|Index: vm_insnhelper.c<br>
|===================================================================<br>
|--- vm_insnhelper.c (revision 18895)<br>
|+++ vm_insnhelper.c (working copy)</p>
<p>コミットしてください。</p>
<p>=end</p>
Ruby master - Bug #513: Tempfile yields [BUG] Stack consistency error
https://bugs.ruby-lang.org/issues/513?journal_id=945
2008-08-28T23:14:29Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<ul></ul><p>=begin<br>
遠藤です。</p>
<p>2008/08/28 21:40 Yukihiro Matsumoto <a href="mailto:matz@ruby-lang.org" class="email">matz@ruby-lang.org</a>:</p>
<blockquote>
<p>まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/36029">[ruby-dev:36029]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Tempfile yields [BUG] Stack consistency error (Closed)" href="https://bugs.ruby-lang.org/issues/513">#513</a>] Tempfile yields [BUG] Stack consistency error"<br>
on Thu, 28 Aug 2008 20:52:05 +0900, "Yusuke ENDOH" <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a> writes:</p>
<p>|BMETHOD 中で throw する可能性があるので、BMETHOD を呼び出す前に<br>
|スタックを縮めるべきかと思います。<br>
|<br>
|Index: vm_insnhelper.c<br>
|===================================================================<br>
|--- vm_insnhelper.c (revision 18895)<br>
|+++ vm_insnhelper.c (working copy)</p>
<p>コミットしてください。</p>
</blockquote>
<p>すみません、このパッチだと make test が通りませんでした。<br>
以下のパッチで make test && make test-all が通ったので、<br>
とりあえずコミットしておきます。</p>
<a name="Index-vm_insnhelperc"></a>
<h1 >Index: vm_insnhelper.c<a href="#Index-vm_insnhelperc" class="wiki-anchor">¶</a></h1>
<p>--- vm_insnhelper.c (revision 18897)<br>
+++ vm_insnhelper.c (working copy)<br>
@@ -519,8 +519,19 @@<br>
}<br>
case NODE_BMETHOD:{<br>
VALUE *argv = cfp->sp - num;</p>
<ul>
<li>
<pre><code> val = vm_call_bmethod(th, id, node->nd_cval, recv, klass, num,
</code></pre>
</li>
</ul>
<p>argv, blockptr);</p>
<ul>
<li>
<pre><code> int state;
</code></pre>
</li>
<li>
<li>
<pre><code> TH_PUSH_TAG(th);
</code></pre>
</li>
<li>
<pre><code> if ((state = EXEC_TAG()) == 0) {
</code></pre>
</li>
<li>
<pre><code> val = vm_call_bmethod(th, id, node->nd_cval, recv, klass, num,
</code></pre>
</li>
</ul>
<p>argv, blockptr);</p>
<ul>
<li>
<pre><code> }
</code></pre>
</li>
<li>
<pre><code> TH_POP_TAG();
</code></pre>
</li>
<li>
<pre><code> cfp->sp += - num - 1;
</code></pre>
</li>
<li>
<li>
<pre><code> if (state) {
</code></pre>
</li>
<li>
<pre><code> JUMP_TAG(state);
</code></pre>
</li>
<li>
<pre><code> }
break;
}
case NODE_ZSUPER:{
</code></pre>
</li>
</ul>
<p>--<br>
Yusuke ENDOH <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p>
<p>=end</p>
Ruby master - Bug #513: Tempfile yields [BUG] Stack consistency error
https://bugs.ruby-lang.org/issues/513?journal_id=946
2008-08-28T23:24:00Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<ul></ul><p>=begin<br>
遠藤です。</p>
<p>2008/08/28 23:09 Yusuke ENDOH <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a>:</p>
<blockquote>
<p>遠藤です。</p>
<p>2008/08/28 21:40 Yukihiro Matsumoto <a href="mailto:matz@ruby-lang.org" class="email">matz@ruby-lang.org</a>:</p>
<blockquote>
<p>まつもと ゆきひろです</p>
<p>In message "Re: <a href="https://blade.ruby-lang.org/ruby-dev/36029">[ruby-dev:36029]</a> Re: [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Tempfile yields [BUG] Stack consistency error (Closed)" href="https://bugs.ruby-lang.org/issues/513">#513</a>] Tempfile yields [BUG] Stack consistency error"<br>
on Thu, 28 Aug 2008 20:52:05 +0900, "Yusuke ENDOH" <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a> writes:</p>
<p>|BMETHOD 中で throw する可能性があるので、BMETHOD を呼び出す前に<br>
|スタックを縮めるべきかと思います。<br>
|<br>
|Index: vm_insnhelper.c<br>
|===================================================================<br>
|--- vm_insnhelper.c (revision 18895)<br>
|+++ vm_insnhelper.c (working copy)</p>
<p>コミットしてください。</p>
</blockquote>
<p>すみません、このパッチだと make test が通りませんでした。<br>
以下のパッチで make test && make test-all が通ったので、<br>
とりあえずコミットしておきます。</p>
</blockquote>
<p>と言ったばかりですが、ささださんがもうちょっと苦しみたいとの<br>
ことなので、テストだけ入れることにします。</p>
<p>--<br>
Yusuke ENDOH <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p>
<p>=end</p>
Ruby master - Bug #513: Tempfile yields [BUG] Stack consistency error
https://bugs.ruby-lang.org/issues/513?journal_id=956
2008-08-29T17:27:05Z
ko1 (Koichi Sasada)
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
Applied in changeset r18918.<br>
=end</p>