]> 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 8f14c110f1b7cd1be7dd918425c35279a059e378..28cdf9da5e302b0cc0c01597d0ba8448941a1862 100644 (file)
@@ -1,5 +1,7 @@
-.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\" 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.
@@ -19,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
 .\"     386BSD man pages
 .\" Modified Sat Jul 24 21:46:21 1993 by Rik Faith (faith@cs.unc.edu)
 .\" Modified Fri Aug  4 10:51:53 2000 - patch from Joseph S. Myers
+.\" 2007-12-15, mtk, Mostly rewritten
 .\"
-.TH ABORT 3  1993-04-12 "GNU" "Linux Programmer's Manual"
+.TH ABORT 3  2017-11-26 "GNU" "Linux Programmer's Manual"
 .SH NAME
-abort \- cause abnormal program termination
+abort \- cause abnormal process termination
 .SH SYNOPSIS
 .nf
 .B #include <stdlib.h>
-.sp
+.PP
 .B void abort(void);
 .fi
 .SH DESCRIPTION
 The
 .BR abort ()
-function causes abnormal program termination unless
-the signal SIGABRT is caught and the signal handler does not return.
-If the
-.BR abort ()
-function causes program termination, all open
-streams are closed and flushed.
+function first unblocks the
+.B SIGABRT
+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
+(see
+.BR longjmp (3)).
 .PP
-If the SIGABRT signal is blocked or ignored, the
+If the
+.B SIGABRT
+signal is ignored, or caught by a handler that returns, the
 .BR abort ()
-function will still override it.
-.SH "RETURN VALUE"
+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
 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)