Standard C Library Functions stack_violation(3C)
NAME
stack_violation - determine stack boundary violation event
SYNOPSIS
#include
int stack_violation(int sig, const siginfo_t *sip,
const ucontext_t *ucp);
DESCRIPTION
The stack_violation() function returns a boolean value indi-
cating whether the signal, sig, and accompanying signal information, sip, and saved context, ucp, represent a stack boundary violation event or a stack overflow.RETURN VALUES
The stack_violation() function returns 0 if the signal does
not represent a stack boundary violation event and 1 if the signal does represent a stack boundary violation event.ERRORS
No errors are defined.EXAMPLES
Example 1 Set up a signal handler to run on an alternate stack. The following example sets up a signal handler for SIGSEGVto run on an alternate signal stack. For each signal it han-
dles, the handler emits a message to indicate if the signal was produced due to a stack boundary violation.#include
#include
#include
#include
static voidhandler(int sig, siginfo_t *sip, void *p)
{ucontext_t *ucp = p;
const char *str;if (stack_violation(sig, sip, ucp))
str = "stack violation.\n"; else str = "no stack violation.\n";SunOS 5.11 Last change: 18 Jul 2002 1
Standard C Library Functions stack_violation(3C)
(void) write(STDERR_FILENO, str, strlen(str));
exit(1); } int main(int argc, char **argv) { struct sigaction sa;stack_t altstack;
altstack.ss_size = SIGSTKSZ;
altstack.ss_sp = malloc(SIGSTKSZ);
altstack.ss_flags = 0;
(void) sigaltstack(&altstack, NULL);sa.sa_sigaction = handler;
(void) sigfillset(&sa.sa_mask);
sa.sa_flags = SA_ONSTACK | SA_SIGINFO;
(void) sigaction(SIGSEGV, &sa, NULL); /** The application is now set up to use stack_violation(3C).
*/ return (0); }USAGE
An application typically uses stack_violation() in a signal
handler that has been installed for SIGSEGV using sigac-
tion(2) with the SA_SIGINFO flag set and is configured to
run on an alternate signal stack.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 18 Jul 2002 2
Standard C Library Functions stack_violation(3C)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | Async-Signal-Safe |
|_____________________________|_____________________________|
SEE ALSO
sigaction(2), sigaltstack(2), stack_getbounds(3C),
stack_inbounds(3C), stack_setbounds(3C), attributes(5)
SunOS 5.11 Last change: 18 Jul 2002 3