rt_sigpending - examine a pending signal mask
The rt_sigpending() system call asks the kernel to store the currently pending
signal set for the calling process in the location pointed to by
sigsetsize argument specifies the size (in bytes) of the memory pointed to by
The purpose of this system call is to allow applications to examine the set of signals which are currently blocked for the caller's execution. This could be useful for synchronizing processes waiting on signals, or to simply query their signal state.
There are some edge cases or drawbacks to using rt_sigpending, particularly with
regard to thread-safe signal handling. If the signal set in
set is not
protected by a mutex or other thread-safe mechanisms, multiple threads may race
to modify the signal set and cause unexpected results. Furthermore, the kernel
may not be able to accurately detect any pending signals if an application
handles them with a signal handler, as the pending signals may be consumed before
the kernel can list them.
sigset_t*[U] - pointer to a sigset_t type in user space.
size_t[K] - The size of the
setargument in bytes.
- K - Originated from kernel-space.
- U - Originated from user space (for example, pointer to user space memory used to get it)
- TOCTOU - Vulnerable to TOCTOU (time of check, time of use)
- OPT - Optional argument - might not always be available (passed with null value)
The do_rt_sigpending() function is the kernel entry point for the rt_sigpending system call. It is responsible for copying the set of pending signals for the calling process into the location pointed to by
set. It is hooked with a Kprobe to provide userspace visibility into the details of pending signal sets.
Example Use Case¶
An example use case for rt_sigpending() is to query the current blocked signal set of the calling process. This is useful to synchronize processes waiting on signals, or to simply query the process's blocked signal state.
No issues have been identified with the rt_sigpending system call.
- sighandler - Set a signal handler for a given signal. May be useful to set a handler for the signal which is blocked.
- sigprocmask - Examine or change the blocked signal set of the calling process.
This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.