[ruby-core:62714] Re: [ruby-trunk - Bug #9835] IGNORE signal handler has possible race condition in Ruby 2.1.2

From: Eric Wong <normalperson@...>
Date: 2014-05-23 23:40:24 UTC
List: ruby-core #62714
I could not reproduce the race, but I think the following is a fix.

http://bogomips.org/ruby.git/patch?id=3137d8389c32e4

  signal.c: fix SIG_IGN race for #9835

  A signal may arrive before SIG_IGN is set, but be handled
  after trap_list[sig].cmd is cleared:

  1. signal_enque runs on signal arrival
  2. user calls trap(sig, "IGNORE"), setting SIG_IGN
  3. rb_signal_exec runs on queued signal

  * signal.c (signal_exec): ignore nil for SIG_IGN
  * signal.c (trap_handler): set cmd to nil for SIG_IGN
  * signal.c (trap): generate "IGNORE" string for nil

Can you please try my patch? Thank you.

In This Thread

Prev Next