# Extra Clang Tools 13 documentation

## clang-tidy - bugprone-signal-handler

# bugprone-signal-handler

Finds functions registered as signal handlers that call non asynchronous-safe functions. Any function that cannot be determined to be an asynchronous-safe function call is assumed to be non-asynchronous-safe by the checker, including user functions for which only the declaration is visible. User function calls with visible definition are checked recursively. The check handles only C code. Only the function names are considered and the fact that the function is a system-call, but no other restrictions on the arguments passed to the functions (the `signal` call is allowed without restrictions).

This check corresponds to the CERT C Coding Standard rule SIG30-C. Call only asynchronous-safe functions within signal handlers and has an alias name `cert-sig30-c`.

AsyncSafeFunctionSet

  Selects wich set of functions is considered as asynchronous-safe (and therefore allowed in signal handlers). Value `minimal` selects a minimal set that is defined in the CERT SIG30-C rule and includes functions `abort()`, `_Exit()`, `quick_exit()` and `signal()`. Value `POSIX` selects a larger set of functions that is listed in POSIX.1-2017 (see this link for more information). The function `quick_exit` is not included in the shown list. It is assumable that the reason is that the list was not updated for C11. The checker includes `quick_exit` in the set of safe functions. Functions registered as exit handlers are not checked.

  Default is `POSIX`.