Skip to content

Commit a2f1c07

Browse files
committed
signal.c: relax installation failure
* signal.c (install_sighandler): ignore failure at unreserved signals. e.g., SIGUSR2 fails under valgrind. * signal.c (install_sighandler_fail): refine [BUG] message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 269b795 commit a2f1c07

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

signal.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -629,9 +629,11 @@ ruby_signal(int signum, sighandler_t handler)
629629
return SIG_ERR;
630630
}
631631
if (old.sa_flags & SA_SIGINFO)
632-
return (sighandler_t)old.sa_sigaction;
632+
handler = (sighandler_t)old.sa_sigaction;
633633
else
634-
return old.sa_handler;
634+
handler = old.sa_handler;
635+
ASSUME(handler != SIG_ERR);
636+
return handler;
635637
}
636638

637639
sighandler_t
@@ -1384,6 +1386,7 @@ sig_list(void)
13841386
return h;
13851387
}
13861388

1389+
#define install_sighandler_fail(signum) rb_bug("failed to install "signum" handler")
13871390
static int
13881391
install_sighandler(int signum, sighandler_t handler)
13891392
{
@@ -1398,7 +1401,9 @@ install_sighandler(int signum, sighandler_t handler)
13981401
return 0;
13991402
}
14001403
#ifndef __native_client__
1401-
# define install_sighandler(signum, handler) (install_sighandler(signum, handler) ? rb_bug(#signum) : (void)0)
1404+
# define install_sighandler(signum, handler) \
1405+
(install_sighandler(signum, handler) && reserved_signal_p(signum) ? \
1406+
install_sighandler_fail(#signum) : (void)0)
14021407
#endif
14031408

14041409
#if defined(SIGCLD) || defined(SIGCHLD)
@@ -1418,7 +1423,8 @@ init_sigchld(int sig)
14181423
return 0;
14191424
}
14201425
# ifndef __native_client__
1421-
# define init_sigchld(signum) (init_sigchld(signum) ? rb_bug(#signum) : (void)0)
1426+
# define init_sigchld(signum) \
1427+
(init_sigchld(signum) ? install_sighandler_fail(#signum) : (void)0)
14221428
# endif
14231429
#endif
14241430

0 commit comments

Comments
 (0)