When assert() fails, what is the program exit code?
assert, c, linux
Solution
The C99 (unchanged in C11) standard states that `assert` calls `abort` and the `abort` stuff states this about the return code:
An implementation-defined form of the status unsuccessful termination is returned to the host environment by means of the function call `raise(SIGABRT)`.
It's documented in section 7.2.1.1 (assert) and 7.20.4.1 (abort) of the C99 standard here.
Many UNIX systems will return 128 plus the signal number (`SIGABRT` is signal number 6) so you may get 134. Whatever you get, it should be documented by the C implementation.
For example, see here for `gcc`. Although it's quite silent on what gets returned to the calling environment. From the specific sections here:
Some choices are made by the library and operating system (or other environment when compiling for a freestanding environment); refer to their documentation for details.
And here:
The behavior of most of these points are dependent on the implementation of the C library, and are not defined by GCC itself.
So is the `glibc` doco here on program termination (specifically the exit status bit). It mentions conventions but no firm rules.
Problem
When an `assert()` call fails, what is the exit code used, and where is it documented?