Actions
Bug #11362
closed[PATCH] ensure Process.kill(:STOP, $$) is resumable
Bug #11362:
[PATCH] ensure Process.kill(:STOP, $$) is resumable
Description
make Process.kill(:STOP, $$) resumable
Self-inflicted signals are delivered immediately. This is fine
for most signals which are catchable, but SIGSTOP and SIGKILL
are special and cannot be caught by a userspace process.
SIGKILL is easy, the process will die immediately and we won't
care for it. However, SIGSTOP is tricky because we cannot know
when it is delivered.
Thus, we must rely on sighandler->timer_thread to signal
th->interrupt_cond when SIGCONT resumes the process.
- signal.c (Init_signal): install sighandler for SIGCONT
- test/ruby/test_process.rb (test_stop_self_resumable): new test
Will commit unless there's a better way. I found this bug
while looking into making signal handling work in single-threaded
processes without relying on timer thread.
Files
Actions