1.\" Copyright (c) 2005 Wojciech A. Koszek <dunstan@FreeBSD.czest.pl> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.Dd September 30, 2006 26.Dt ABORT2 2 27.Os 28.Sh NAME 29.Nm abort2 30.Nd "abort process with diagnostics" 31.Sh LIBRARY 32.Lb libc 33.Sh SYNOPSIS 34.In stdlib.h 35.Ft void 36.Fn abort2 "const char *why" "int nargs" "void **args" 37.Sh DESCRIPTION 38The 39.Fn abort2 40system call causes the process to be killed and the specified diagnostic 41message (with arguments) to be delivered by the kernel to the 42.Xr syslogd 8 43daemon. 44.Pp 45The 46.Fa why 47argument points to a 48.Dv NUL- Ns 49terminated string specifying a reason of the program's termination 50(maximum 128 characters long). 51The 52.Fa args 53array contains pointers which will be logged numerically 54(with the kernel's 55.Ql %p 56.Xr printf 9 57format). 58The 59.Fa nargs 60argument specifies the number of pointers in 61.Fa args 62(maximum 16). 63.Pp 64The 65.Fn abort2 66system call 67is intended for use in situations where continuation of a process 68is impossible or for other definitive reasons is unwanted, and normal 69diagnostic channels cannot be trusted to deliver the message. 70.Sh RETURN VALUES 71The 72.Fn abort2 73function 74never returns. 75.Pp 76The process is killed with 77.Dv SIGABRT 78unless the arguments to 79.Fn abort2 80are invalid, in which case 81.Dv SIGKILL 82is used. 83.Sh EXAMPLES 84.Bd -literal -compact 85#include <stdlib.h> 86 87if (weight_kg > max_load) { 88 void *ptrs[3]; 89 90 ptrs[0] = (void *)(intptr_t)weight_kg; 91 ptrs[1] = (void *)(intptr_t)max_load; 92 ptrs[2] = haystack; 93 abort2("Camel overloaded", 3, ptrs); 94} 95.Ed 96.Sh SEE ALSO 97.Xr abort 3 , 98.Xr exit 3 99.Sh HISTORY 100The 101.Fn abort2 102system call first appeared in 103.Fx 7.0 . 104.Sh AUTHORS 105.An -nosplit 106The 107.Fn abort2 108system call was designed by 109.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org . 110It was implemented by 111.An Wojciech A. Koszek Aq Mt dunstan@freebsd.czest.pl . 112