https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2011-05-23T07:00:30Z
Ruby Issue Tracking System
Ruby master - Bug #4765: signal が正しくマスクされておらず main thread でシグナルハンドラが動いている
https://bugs.ruby-lang.org/issues/4765?journal_id=17153
2011-05-23T07:00:30Z
sorah (Sorah Fukumori)
her@sorah.jp
<ul></ul><p>Motohiro KOSAKI wrote:</p>
<blockquote>
<p>これは、くだんのテストが子プロセスにSIGINT送って送出されてくる例外を確認しているのですが、<br>
test/unit/parallel.rb#run() に Signal.trap(:INT,"IGNORE") という極悪な文があるため、<br>
テストでSIGINTが動かなくなる仕様変更がこっそり行われているためです。</p>
<p>soraさん、この行の意図はなんですか?代替案を考える必要があると思いますが、このような<br>
子プロセスに伝搬する設定をこっそり行うのは許容できないと思います。テストに支障が出るし<br>
第一 Ctrl-C がなかなか効かなくて test-all するときにイライラします。</p>
</blockquote>
<p>実行するテストでのシグナル周りを失念していました.修正します…</p>
Ruby master - Bug #4765: signal が正しくマスクされておらず main thread でシグナルハンドラが動いている
https://bugs.ruby-lang.org/issues/4765?journal_id=17852
2011-06-12T18:53:24Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul><li><strong>File</strong> <a href="/attachments/1790">remove-signalmask-op.patch</a> <a class="icon-only icon-download" title="Download" href="/attachments/download/1790/remove-signalmask-op.patch">remove-signalmask-op.patch</a> added</li></ul><p>ささださんと議論した結果、逆にシグナルマスク操作を全部削除してしまって全スレッドでシグナルを受けれるようにしたほうが<br>
よいという結論にしました。改訂版パッチを添付します。<br>
rb_syswait() の件が経緯不明のため、このパッチは1.9.4 送りの方向で考えています。</p>
Ruby master - Bug #4765: signal が正しくマスクされておらず main thread でシグナルハンドラが動いている
https://bugs.ruby-lang.org/issues/4765?journal_id=19054
2011-07-11T02:04:42Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r32510.<br>
Motohiro, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<ul>
<li>
<p>thread_pthread.c (rb_thread_create_timer_thread): removed<br>
rb_disable_interrupt()/rb_enable_interrupt().</p>
</li>
<li>
<p>vm_core.h: ditto.</p>
</li>
<li>
<p>process.c (static void before_exec): ditto.</p>
</li>
<li>
<p>process.c (static void after_exec): ditto.<br>
[Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed child" title="Bug: signal が正しくマスクされておらず main thread でシグナルハンドラが動いている (Closed)" href="https://bugs.ruby-lang.org/issues/4765">#4765</a>] <a href="/issues/4765">[ruby-dev:43571]</a></p>
</li>
<li>
<p>eval_intern.h: removed rb_trap_restore_mask().</p>
</li>
<li>
<p>vm_eval.c (rb_throw_obj): ditto.</p>
</li>
<li>
<p>eval.c (setup_exception): ditto.</p>
</li>
<li>
<p>signal.c: removed trap_last_mask.</p>
</li>
<li>
<p>signal.c (trap_restore_mask): removed.</p>
</li>
<li>
<p>signal.c (init_sigchld): comment clarification why signal block<br>
is needed. and removed trap_last_mask operation.</p>
</li>
<li>
<p>signal.c (trap_ensure): removed trap_last_mask operation.</p>
</li>
<li>
<p>signal.c (rb_disable_interrupt, rb_enable_interrupt): made<br>
static and removed sigdelset(SIGVTALARM) and sigdelset(SIGSEGV).</p>
</li>
<li>
<p>process.c (rb_syswait): removed implicit signal handler change.</p>
</li>
</ul>