diff options
Diffstat (limited to 'signal.c')
-rw-r--r-- | signal.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -43,6 +43,7 @@ #include "internal/thread.h" #include "ruby_atomic.h" #include "vm_core.h" +#include "ractor_core.h" #ifdef NEED_RUBY_ATOMIC_OPS rb_atomic_t @@ -1410,6 +1411,11 @@ sig_trap(int argc, VALUE *argv, VALUE _) func = trap_handler(&cmd, sig); } + if (rb_obj_is_proc(cmd) && + !rb_ractor_main_p() && !rb_ractor_shareable_p(cmd)) { + cmd = rb_proc_isolate(cmd); + } + return trap(sig, func, cmd); } |