Skip to content
Latchkey
Exit Codes & Signals

What every exit code and signal means when a CI job dies.

A reference for the process exit codes and Unix signals you see in CI logs - what each one means, why it happens, and how to fix it.

Exit codes

Common and tool-specific exit codes.

Process completed with exit code NThe GitHub Actions message "Process completed with exit code N" just reports the shell exit status of a run s… curl exit 22curl exit code 22 means the server returned an HTTP error (>= 400) while curl ran with --fail. What it means… curl exit 28curl exit code 28 means the operation timed out - connect or transfer exceeded the timeout. A frequently tran… curl exit 35curl exit code 35 means an SSL/TLS handshake failed - a protocol, cipher, or certificate negotiation problem.… curl exit 52curl exit code 52 means the server returned nothing - an empty reply. Often a server that closed the connecti… curl exit 56curl exit code 56 means a failure receiving network data - the connection was reset or dropped mid-transfer.… curl exit 6curl exit code 6 means "could not resolve host" - a DNS resolution failure. Common causes in CI and how to fi… curl exit 7curl exit code 7 means "failed to connect to host" - the host resolved but the TCP connection was refused or… diff exit 1diff exit code 1 means the compared inputs differ - exactly how format/lint "check" steps fail. Why it is int… eslint exit 1ESLint exits with code 1 when it reports at least one error (or warnings under --max-warnings 0). What it mea… Exit code 0What exit code 0 means when a CI step fails: success. The likely causes and how to debug and fix it. Exit code 1What exit code 1 means when a CI step fails: a generic, catch-all failure. The likely causes and how to debug… Exit code 100Exit code 100 commonly comes from apt/apt-get when a package operation fails - a missing package, a stale ind… Exit code 124Exit code 124 means the GNU `timeout` command terminated a process because it ran past its time budget. What… Exit code 125Exit code 125 means `docker run` itself failed (bad flag, image, or daemon error) or `timeout` could not star… Exit code 126What exit code 126 means when a CI step fails: the command was found but is not executable. The likely causes… Exit code 127What exit code 127 means when a CI step fails: command not found. The likely causes and how to debug and fix… Exit code 128What exit code 128 means when a CI step fails: an invalid argument to exit, or a base for signal codes. The l… Exit code 129Exit code 129 means a process was terminated by SIGHUP (128 + 1) - a controlling terminal closed or a reload… Exit code 130Exit code 130 means a process was terminated by SIGINT (128 + 2) - usually a cancelled CI run or a Ctrl-C. Wh… Exit code 132Exit code 132 means a process was killed by SIGILL (128 + 4) - an illegal CPU instruction, usually an archite… Exit code 133Exit code 133 means a process was terminated by SIGTRAP (128 + 5) - a trace/breakpoint trap, often a stray de… Exit code 134Exit code 134 means a process was aborted by SIGABRT (128 + 6) - a failed assertion, heap corruption, or an u… Exit code 135Exit code 135 means a process was killed by SIGBUS (128 + 7) - a bus error from a misaligned access or a trun… Exit code 136Exit code 136 means a process was killed by SIGFPE (128 + 8) - an arithmetic exception, usually integer divid… Exit code 137Exit code 137 means a process was killed by SIGKILL (128 + 9) - in CI almost always the out-of-memory killer.… Exit code 138Exit code 138 means a process was terminated by signal 10 (128 + 10) - often a SIGBUS variant on BSD/macOS or… Exit code 139Exit code 139 means a process crashed with a segmentation fault (SIGSEGV, 128 + 11). What causes it in CI and… Exit code 140Exit code 140 means a process was terminated by signal 12 (128 + 12) - typically SIGUSR2, an application-defi… Exit code 141Exit code 141 means a process was killed by SIGPIPE (128 + 13) - a write to a closed pipe, surfaced by pipefa… Exit code 142Exit code 142 means a process was terminated by SIGALRM (128 + 14) - an alarm() timer fired, usually a self-i… Exit code 143Exit code 143 means a process was terminated by SIGTERM (128 + 15) - a step timeout, spot preemption, or orch… Exit code 2What exit code 2 means when a CI step fails: misuse of a shell builtin, or a tool-specific error. The likely… Exit code 247Exit code 247 often signals a Node.js / V8 out-of-memory abort in CI. What the code means, why it differs fro… Exit code 255What exit code 255 means when a CI step fails: an exit status out of range, or a catch-all fatal. The likely… Exit code 3What exit code 3 means when a CI step fails: an application-specific error. The likely causes and how to debu… Exit code 4What exit code 4 means when a CI step fails: an application-specific error. The likely causes and how to debu… Exit code 5What exit code 5 means when a CI step fails: an application-specific error (e.g. pytest: no tests collected).… go test exit codesgo test uses exit 1 for test failures and exit 2 for build/compile or setup errors. How to tell them apart an… grep exit 1grep exit code 1 means no lines matched the pattern - a normal result, not an error. Why it breaks CI under s… jest exit 1Jest exits with code 1 when tests fail, or when no tests are found unless --passWithNoTests is set. How to re… make exit 2make exits with code 2 when a recipe command fails or a target/rule error occurs. What it means in CI and how… npm exit codesHow to read npm exit codes in CI: exit 1 for ELIFECYCLE script failures, ERESOLVE dependency conflicts, and n… pytest exit codespytest returns exit codes 0-5, each with a defined meaning: all passed, tests failed, interrupted, internal e… rsync exit codesrsync has many exit codes: 23 (partial transfer), 12 (protocol/stream error), 11 (file I/O), 30 (timeout). A… ssh exit 255SSH exit code 255 means ssh itself failed - connection refused, host key mismatch, auth failure, or network e…

Signals

SIGKILL, SIGTERM, SIGSEGV, and friends.

SIGABRT - signal 6SIGABRT (signal 6) is raised by abort() - a failed assertion, heap corruption, or unhandled C++ exception; a… SIGABRT - signal 6What SIGABRT (signal 6) means in CI: the process called abort() - an assertion or fatal library error. A proc… SIGALRM - signal 14SIGALRM (signal 14) is delivered when an alarm() timer fires; a process killed by it exits 142. Usually a sel… SIGALRM - signal 14What SIGALRM (signal 14) means in CI: a timer (alarm) expired. A process killed by it exits with code 142. Ca… SIGBUS - signal 7SIGBUS (signal 7) is a bus error from a misaligned access or a truncated mmap; a process killed by it exits 1… SIGBUS - signal 7What SIGBUS (signal 7) means in CI: a bus error - invalid memory access alignment or mapping. A process kille… SIGFPE - signal 8SIGFPE (signal 8) is a fatal arithmetic exception, usually integer divide-by-zero; a process killed by it exi… SIGFPE - signal 8What SIGFPE (signal 8) means in CI: an arithmetic exception, usually integer divide-by-zero. A process killed… SIGHUP - signal 1SIGHUP (signal 1) fires when a terminal disconnects or a reload is requested; a process killed by it exits 12… SIGHUP - signal 1What SIGHUP (signal 1) means in CI: a controlling terminal closed or a reload was requested. A process killed… SIGILL - signal 4What SIGILL (signal 4) means in CI: an illegal CPU instruction was executed. A process killed by it exits wit… SIGINT - signal 2SIGINT (signal 2) is the interrupt signal Ctrl-C sends; a process killed by it exits 130. In non-interactive… SIGINT - signal 2What SIGINT (signal 2) means in CI: an interrupt (Ctrl-C) or job cancellation. A process killed by it exits w… SIGKILL - signal 9SIGKILL (signal 9) is an uncatchable forced kill; in CI it is almost always the OOM killer, surfacing as exit… SIGKILL - signal 9What SIGKILL (signal 9) means in CI: an uncatchable forced kill - on CI almost always the OOM killer. A proce… SIGPIPE - signal 13SIGPIPE (signal 13) is sent when a process writes to a pipe with no reader; a process killed by it exits 141.… SIGPIPE - signal 13What SIGPIPE (signal 13) means in CI: a write to a pipe with no reader. A process killed by it exits with cod… SIGQUIT - signal 3SIGQUIT (signal 3) is a quit request that triggers a core dump (and a JVM thread dump); a process killed by i… SIGQUIT - signal 3What SIGQUIT (signal 3) means in CI: a quit request, often producing a core dump or thread dump. A process ki… SIGSEGV - signal 11SIGSEGV (signal 11) is a segmentation fault from invalid memory access; a process killed by it exits 139. Alm… SIGSEGV - signal 11What SIGSEGV (signal 11) means in CI: a segmentation fault - invalid memory access. A process killed by it ex… SIGSTOP - signal 19What SIGSTOP (signal 19) means in CI: an uncatchable stop (pause) of the process. A process killed by it exit… SIGSYS - signal 31What SIGSYS (signal 31) means in CI: a bad system call, often a seccomp violation. A process killed by it exi… SIGTERM - signal 15SIGTERM (signal 15) is the polite termination request; a process killed by it exits with code 143. In CI it u… SIGTERM - signal 15What SIGTERM (signal 15) means in CI: a graceful termination request. A process killed by it exits with code… SIGTRAP - signal 5What SIGTRAP (signal 5) means in CI: a trace/breakpoint trap. A process killed by it exits with code 133. Cau… SIGTSTP - signal 20What SIGTSTP (signal 20) means in CI: a terminal stop request (Ctrl-Z). A process killed by it exits with cod… SIGUSR1 - signal 10What SIGUSR1 (signal 10) means in CI: a user-defined signal. A process killed by it exits with code 138. Caus… SIGUSR2 - signal 12What SIGUSR2 (signal 12) means in CI: a second user-defined signal. A process killed by it exits with code 14… SIGXCPU - signal 24What SIGXCPU (signal 24) means in CI: the CPU time limit (RLIMIT_CPU) was exceeded. A process killed by it ex… SIGXFSZ - signal 25What SIGXFSZ (signal 25) means in CI: the file-size limit (RLIMIT_FSIZE) was exceeded. A process killed by it…
Explore other topics