]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/abort.3
rename.2: SEE ALSO: add rename(1)
[thirdparty/man-pages.git] / man3 / abort.3
index 9de707bff87db8ee1b15da927428600a57271530..28cdf9da5e302b0cc0c01597d0ba8448941a1862 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright 2007 (C) Michael Kerrisk <mtk.manpages@gmail.com>
 .\" some parts Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -20,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" References consulted:
 .\"     Linux libc source code
 .\" Modified Fri Aug  4 10:51:53 2000 - patch from Joseph S. Myers
 .\" 2007-12-15, mtk, Mostly rewritten
 .\"
-.TH ABORT 3  2007-12-15 "GNU" "Linux Programmer's Manual"
+.TH ABORT 3  2017-11-26 "GNU" "Linux Programmer's Manual"
 .SH NAME
 abort \- cause abnormal process termination
 .SH SYNOPSIS
 .nf
 .B #include <stdlib.h>
-.sp
+.PP
 .B void abort(void);
 .fi
 .SH DESCRIPTION
 The
 .BR abort ()
-first unblocks the
+function first unblocks the
 .B SIGABRT
-signal, and then raises that signal for the calling process.
+signal, and then raises that signal for the calling process
+(as though
+.BR raise (3)
+was called).
 This results in the abnormal termination of the process unless the
 .B SIGABRT
 signal is caught and the signal handler does not return
@@ -51,11 +56,6 @@ signal is caught and the signal handler does not return
 .BR longjmp (3)).
 .PP
 If the
-.BR abort ()
-function causes process termination,
-all open streams are closed and flushed.
-.PP
-If the
 .B SIGABRT
 signal is ignored, or caught by a handler that returns, the
 .BR abort ()
@@ -63,15 +63,43 @@ function will still terminate the process.
 It does this by restoring the default disposition for
 .B SIGABRT
 and then raising the signal for a second time.
-.SH "RETURN VALUE"
+.SH RETURN VALUE
 The
 .BR abort ()
 function never returns.
-.SH "CONFORMING TO"
-SVr4, POSIX.1-2001, 4.3BSD, C89, C99.
-.SH "SEE ALSO"
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface      Attribute       Value
+T{
+.BR abort ()
+T}     Thread safety   MT-Safe
+.TE
+.SH CONFORMING TO
+SVr4, POSIX.1-2001, POSIX.1-2008, 4.3BSD, C89, C99.
+.SH NOTES
+Up until glibc 2.26,
+if the
+.BR abort ()
+function caused process termination,
+all open streams were closed and flushed (as with
+.BR fclose (3)).
+However, in some cases this could result in deadlocks and data corruption.
+Therefore, starting with glibc 2.27,
+.\" glibc commit 91e7cf982d0104f0e71770f5ae8e3faf352dea9f
+.BR abort ()
+terminates the process without flushing streams.
+POSIX.1 permits either possible behavior, saying that
+.BR abort ()
+"may include an attempt to effect fclose() on all open streams".
+.SH SEE ALSO
 .BR gdb (1),
 .BR sigaction (2),
+.BR assert (3),
 .BR exit (3),
 .BR longjmp (3),
 .BR raise (3)