Here are some common exit codes that may be returned by a program or script.
|1||General Error, typical catch-all value|
|2||Misuse of shell builtins, keywords, or functions|
|6||No such device or address. Eg. curl on an invalid host.|
|124||Command timed out (coreutils/timeout)|
|125||Command failure (coreutils/timeout)|
|126||Command found, but cannot be executed|
|127||Command not found. Possible path or typo issue.|
|128||Invalid argument to exit. Eg. |
|128+n||Fatal error signal n, where n is the signal number as defined in:|
|130||Program Interrupted (SIGINT, 128+2), such as termination from Ctrl-C|
|134||Program Abort (SIGABRT, 128+6)|
|136||Erroneous Arithmetic Operation (SIGFPE, 128+8), such as division by zero|
|137||Killed. (SIGKILL, 128+9)|
|139||Segmentation Fault (SIGSEGV, 11)|
|160+n||The largest signal value is 31. As a result, all values after 128+31 can be interpreted as negative return codes by treating the value as a 1 byte integer.
For example, 255 = -1, 254 = -2, 240 = -16, 225 = -31, and so forth
A simple way to 'convert' it is to just subtract the value from 256.
|255||Maximum exit code value. Obtained when the program calls |
|256+||All higher exit codes should be reduced down to the 0-255 range. More information below. You typically either modulo the code by 256 or take the high 8-bit values.
Parsing high exit code values[edit | edit source]
At least on Linux (and whatever is reported by Slurm), the exit code that's stored is an 2 byte value which can be parsed as:
|high 8 bits||The actual exit code|
|7 bit||if a core dump was produced|
|lower 7 bits||signal number that killed the process|
For example, the exit code 32512 has an exit code of 127 (command not found).
See Also[edit | edit source]
- Coreutils / Timeout: https://www.gnu.org/software/coreutils/manual/html_node/timeout-invocation.html