Process killed without diagnostic output
April 30, 2026 ยท View on GitHub
Playbook ID: process-killed-no-logs
Category: runtime
Severity: high
Tags: sigkill, killed, exit-137, exit-143, signal, oom, timeout
What this failure means
A CI process was killed externally, producing little or no diagnostic output. Exit code 137 (SIGKILL) is the most common indicator. The kill is usually triggered by the OOM killer, a CI job timeout, or a watchdog process terminating a runaway job.
Common log signals
Killed
signal: killed
exit status 137
exit code: 137
Exit Code: 137
exit code 143
signal 9
SIGKILL
Diagnosis
A bare Killed with exit 137 means the process was sent SIGKILL from
outside, not from application code. The absence of a stack trace or panic is
a key diagnostic clue.
Exit code reference:
- 137 = 128 + 9 (SIGKILL): OOM killer, container memory limit, or
explicit
kill -9 - 143 = 128 + 15 (SIGTERM): CI job timeout, graceful shutdown request
- 130 = 128 + 2 (SIGINT): Manual cancellation or Ctrl-C in script
Determine the cause:
-
Check runner memory usage at the time of failure in CI platform dashboards.
-
Check whether the job time limit was reached:
# GitHub Actions: look for "The operation was canceled" in the job log # GitLab CI: look for "Job ... timed out" in the runner log -
Check for OOM events in the runner or container:
# Linux kernel OOM log dmesg | grep -i "oom\|killed process" journalctl -k | grep -i "oom\|Out of memory"
Fix steps
If OOM-killed:
- Profile memory usage and reduce peak consumption (see
oom-killedplaybook for detailed steps). - Increase the runner or container memory limit.
- Reduce parallelism: use
--workers=1or equivalent to lower peak memory.
If killed by job timeout:
-
Identify and fix slow tests or steps that consistently approach the limit.
-
Split the job into smaller parallel jobs that each complete within budget.
-
Increase the timeout as a temporary measure while fixing the root cause:
# GitHub Actions jobs: build: timeout-minutes: 60 # increase from default 6-hour or explicit limit # GitLab CI job_name: timeout: 1h
If killed by watchdog or concurrency limit:
- Ensure the process respects SIGTERM by installing a signal handler and flushing output before exiting.
- Check whether CI concurrency limits cancel in-progress jobs when a newer
run starts (GitHub Actions
concurrencywithcancel-in-progress: true).
General:
- Add resource monitoring to the CI job so memory and CPU trends are visible before the kill occurs.
- Ensure test output is flushed before the process exits so partial results are not lost.
Validation
- Re-run the failing job and confirm it completes without being killed.
- Check that the exit code is 0 rather than 137 or 143.
Likely files to inspect
(Not specified.)
Run Faultline
faultline analyze build.log
faultline explain process-killed-no-logs
faultline workflow build.log --json --mode agent
Search phrases this page answers
- Process killed without diagnostic output
- Runtime: process killed without diagnostic output
- process exited with signal
- faultline explain process-killed-no-logs
Generated from playbooks/bundled/log/runtime/process-killed-no-logs.yaml. Do not edit directly โ run make docs-generate.