GitHub Actions "Error: Process completed with exit code 137" (OOM)
Exit code 137 means the process received SIGKILL (128 + 9); on a runner this is nearly always the OOM killer reclaiming memory because the job exceeded the host RAM.
What this error means
A memory-heavy step (build, test, bundling) is killed with "Error: Process completed with exit code 137", often with no clean error from the tool itself.
Killed
Error: Process completed with exit code 137.Common causes
Job exceeded runner RAM
The workload allocated more memory than the runner has, so the kernel OOM killer terminated the largest process.
Too much parallelism for the host
High concurrency (test workers, parallel compiles) multiplied per-process memory beyond what the host can hold.
How to fix it
Reduce memory pressure or add headroom
- Lower worker/parallelism counts (jest --maxWorkers, make -j).
- Cap heap where applicable (NODE_OPTIONS=--max-old-space-size).
- Split the heavy step so each process uses less memory.
- Move to a runner with more RAM.
env:
NODE_OPTIONS: --max-old-space-size=4096Use right-sized managed runners
Latchkey managed runners offer right-sized RAM and auto-retry transient infrastructure failures, so an OOM from an undersized host is avoided, at roughly 69% less than GitHub-hosted runners.
How to prevent it
- Match runner RAM to peak job memory.
- Tune parallelism to fit the host.
- Watch memory trends on heavy build/test steps.