---
name: "abort2"
section: "2"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/abort2"
---

# abort2(2)

abort process with diagnostics

## NAME

**abort2** – abort process with diagnostics

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdlib.h\>**

*void*\

**abort2**(*const char \*why*, *int nargs*, *void \*\*args*);

## DESCRIPTION

The **abort2**() system call causes the process to be killed and the specified diagnostic message (with arguments) to be delivered by the kernel to the [syslogd(8)](/syslogd/8.md) daemon.

The *why* argument points to aNUL- terminated string specifying a reason of the program's termination (maximum 128 characters long). The *args* array contains pointers which will be logged numerically (with the kernel's ‘%p’ [printf(9)](/printf/9.md) format). The *nargs* argument specifies the number of pointers in *args* (maximum 16).

The **abort2**() system call is intended for use in situations where continuation of a process is impossible or for other definitive reasons is unwanted, and normal diagnostic channels cannot be trusted to deliver the message.

## RETURN VALUES

The **abort2**() function never returns.

The process is killed with SIGABRT unless the arguments to **abort2**() are invalid, in which case SIGKILL is used.

## EXAMPLES

```
#include <stdlib.h>
if (weight_kg > max_load) {
	void *ptrs[3];
	ptrs[0] = (void *)(intptr_t)weight_kg;
	ptrs[1] = (void *)(intptr_t)max_load;
	ptrs[2] = haystack;
	abort2("Camel overloaded", 3, ptrs);
}
```

## SEE ALSO

[abort(3)](/abort/3.md), [exit(3)](/exit/3.md)

## HISTORY

The **abort2**() system call first appeared in FreeBSD 7.0.

## AUTHORS

The **abort2**() system call was designed by Poul-Henning Kamp ⟨*phk@FreeBSD.org*⟩. It was implemented by Wojciech A. Koszek ⟨*dunstan@freebsd.czest.pl*⟩.
