diff --git a/signal.c b/signal.c
index b1773bc4d5..27ff442bb6 100644
--- a/signal.c
+++ b/signal.c
@@ -325,6 +325,16 @@ ruby_default_signal(int sig)
* produces:
*
* Ouch!
+ *
+ * If _signal_ is an integer but wrong for signal,
+ * Errno::EINVAL
or +RangeError+ will be raised.
+ * Otherwise unless _signal_ is a +String+ or a +Symbol+, and a known
+ * sinal name, +ArgumentError+ will be raised.
+ *
+ * Also, Errno::ESRCH
or +RangeError+ for invalid _pid_,
+ * Errno::EPERM
when failed because of no privilege,
+ * will be raised. In these cases, signals may have been sent to
+ * preceding processes.
*/
VALUE