Ruby Issue Tracking System: Issues
https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2018-04-08T01:39:36Z
Ruby Issue Tracking System
Redmine
Ruby master - Bug #14670 (Closed): Objectで定義したmethod_missingでsuperが使えない
https://redmine.ruby-lang.org/issues/14670
2018-04-08T01:39:36Z
keiju (Keiju Ishitsuka)
keiju@ishitsuka.com
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">Object</span>
<span class="k">def</span> <span class="nf">method_missing</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">&</span><span class="n">block</span><span class="p">)</span>
<span class="k">super</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">Object</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">foo</span>
</code></pre>
<p>を実行すると, <code>SystemStackError</code> になってしまいます.</p>
<p>再定義する先が<code>Object</code>でなければ(<code>Object</code>のサブクラスなら)問題ないです.</p>
Ruby master - Bug #13768 (Closed): SIGCHLD and Thread dead-lock problem
https://redmine.ruby-lang.org/issues/13768
2017-07-26T03:47:58Z
keiju (Keiju Ishitsuka)
keiju@ishitsuka.com
<p>けいじゅ@いしつかです.</p>
<p>下記のプログラムを実行するとThreadがデッドロックしたと例外が発生します.</p>
<a name="コメント部分をはずせば-デッドロックはしません"></a>
<h1 >コメント部分をはずせば, デッドロックはしません<a href="#コメント部分をはずせば-デッドロックはしません" class="wiki-anchor">¶</a></h1>
<p>シグナルのtrapが絡むときのデッドロックの検知に問題があるのではないかと<br>
思いますがいかがでしょう?</p>
<pre><code>% ruby -v
ruby 2.5.0dev (2017-07-25 trunk 59417) [i686-linux]
</code></pre>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">q</span> <span class="o">=</span> <span class="no">Queue</span><span class="p">.</span><span class="nf">new</span>
<span class="nb">p</span> <span class="o">=</span> <span class="no">Queue</span><span class="p">.</span><span class="nf">new</span>
<span class="nb">trap</span><span class="p">(</span><span class="ss">:SIGCHLD</span><span class="p">)</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"SIGCHLD"</span>
<span class="n">q</span><span class="p">.</span><span class="nf">push</span> <span class="mi">1</span>
<span class="k">end</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">start</span> <span class="k">do</span>
<span class="no">Process</span><span class="p">.</span><span class="nf">spawn</span><span class="p">(</span><span class="s2">"/bin/sleep 1"</span><span class="p">)</span>
<span class="k">end</span>
<span class="c1">#Thread.start do</span>
<span class="c1"># loop do</span>
<span class="c1"># sleep 100</span>
<span class="c1"># end</span>
<span class="c1">#end</span>
<span class="n">th</span> <span class="o">=</span> <span class="no">Thread</span><span class="p">.</span><span class="nf">start</span><span class="p">{</span>
<span class="nb">p</span><span class="p">.</span><span class="nf">push</span> <span class="n">q</span><span class="p">.</span><span class="nf">pop</span>
<span class="p">}</span>
<span class="nb">p</span><span class="p">.</span><span class="nf">pop</span>
</code></pre>
<p>__<br>
---------------------------------------------------->> 石塚 圭樹 <<---<br>
---------------------------------->> e-mail: <a href="mailto:keiju@ishitsuka.com" class="email">keiju@ishitsuka.com</a> <<---</p>