# SC114: Second SIGTERM could not be delivered

> SC114 (second SIGTERM could not be delivered) means work had already ended when repeatSignalAfterMs fired. Lower the delay or make the workload run longer.

Source: https://shutdown.jscrate.dev/docs/codes/sc114
Last updated: 2026-09-23

`SC114` means shutdown-check could not send the second `SIGTERM` while the
original workload was still active. The process or request ended first, or the
operating system refused the signal.

| | |
| --- | --- |
| Code | `SC114` (FAIL) |
| Stage | Startup and in-flight work |
| CLI exit code | 1 |
| What it means | With `repeatSignalAfterMs` set, the second signal could not be sent while work was still active. |
| Message | `Second SIGTERM could not be delivered while work was still active` |
| First thing to check | Make the workload run longer than `repeatSignalAfterMs`, or lower that delay. |

## How do I fix it?

- Set `repeatSignalAfterMs` well below the workload duration.
- Make the controlled test workload stay active longer.
- Keep `repeatSignalAfterMs` below `shutdown.deadlineMs`.
- Check whether the first signal makes the process exit immediately.

```json title="shutdown-check.json"
{
  "shutdown": {
    "deadlineMs": 10000,
    "repeatSignalAfterMs": 500
  }
}
```

The repeated signal check is optional. Use it when your process manager or
operators may send `SIGTERM` more than once. A correct handler should not cut
off active work when the second signal arrives.

## How do I verify the fix?

A passing timeline contains `signal repeated — SIGTERM` before every
`work request finished` event. The requests must then finish normally and the
process must exit with the expected code.

If the second signal is delivered but the request is interrupted, the result
moves to SC201. Make the handler idempotent instead of removing the repeated
signal check.

## Related

- [Shutdown configuration](https://shutdown.jscrate.dev/docs/configuration#shutdown)
- [Write an idempotent SIGTERM handler](https://shutdown.jscrate.dev/docs/guides/graceful-shutdown-nodejs)
- [SC201: Request interrupted](https://shutdown.jscrate.dev/docs/codes/sc201)
