aboutsummaryrefslogtreecommitdiffstats
path: root/man7/signal.7
diff options
context:
space:
mode:
authorMichael Kerrisk <mtk.manpages@gmail.com>2016-02-16 15:33:24 +0100
committerMichael Kerrisk <mtk.manpages@gmail.com>2016-02-16 15:48:36 +0100
commit082efcce8be74b6b6f30e4b9a33d35ef68b9772c (patch)
tree0dd1ad8844b9d6b72ce283a90302562335299ca3 /man7/signal.7
parentf1d6ee621182f84ba729faad1f71fae1a606ee96 (diff)
downloadman-pages-082efcce8be74b6b6f30e4b9a33d35ef68b9772c.tar.gz
signal.7: Note the interactions of longjmp() and non-async-signal-safe functions
See http://austingroupbugs.net/view.php?id=516#c1195. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man7/signal.7')
-rw-r--r--man7/signal.79
1 files changed, 8 insertions, 1 deletions
diff --git a/man7/signal.7 b/man7/signal.7
index e57e751e86..83263055a9 100644
--- a/man7/signal.7
+++ b/man7/signal.7
@@ -474,7 +474,14 @@ at some arbitrary point in the execution of the program.
POSIX has the concept of "safe function".
If a signal interrupts the execution of an unsafe function, and
.I handler
-calls an unsafe function, then the behavior of the program is undefined.
+either calls an unsafe function or
+.I handler
+terminates via a call to
+.BR longjmp ()
+or
+.BR siglongjmp ()
+and the program subsequently calls an unsafe function,
+then the behavior of the program is undefined.
POSIX.1-2004 (also known as POSIX.1-2001 Technical Corrigendum 2)
requires an implementation to guarantee that the following