Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

stack_violation(3c) [opensolaris man page]

stack_violation(3C)					   Standard C Library Functions 				       stack_violation(3C)

NAME
stack_violation - determine stack boundary violation event SYNOPSIS
#include <ucontext.h> int stack_violation(int sig, const siginfo_t *sip, const ucontext_t *ucp); DESCRIPTION
The stack_violation() function returns a boolean value indicating 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 repre- sent 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 SIGSEGV to run on an alternate signal stack. For each signal it handles, the handler emits a message to indicate if the signal was produced due to a stack boundary violation. #include <stdlib.h> #include <unistd.h> #include <ucontext.h> #include <signal.h> static void handler(int sig, siginfo_t *sip, void *p) { ucontext_t *ucp = p; const char *str; if (stack_violation(sig, sip, ucp)) str = "stack violation. "; else str = "no stack violation. "; (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 sigaction(2) with the SA_SIG- INFO flag set and is configured to run on an alternate signal stack. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |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 18 Jul 2002 stack_violation(3C)

Check Out this Related Man Page

stack_setbounds(3C)					   Standard C Library Functions 				       stack_setbounds(3C)

NAME
stack_setbounds - update stack boundaries SYNOPSIS
#include <ucontext.h> int stack_setbounds(const stack_t *sp); DESCRIPTION
The stack_setbounds() function updates the current base and bounds of the stack for the current thread to the bounds specified by the stack_t structure pointed to by sp. The ss_sp member refers to the virtual address of the base of the stack memory. The ss_size member refers to the size of the stack in bytes. The ss_flags member must be set to 0. RETURN VALUES
Upon successful completion, stack_setbounds() returns 0. Otherwise, -1 is returned and errno is set to indicate the error. ERRORS
The stack_setbounds() function will fail if: EFAULT The sp argument does not refer to a valid address or the ss_sp member of the stack_t structure pointed to by sp points to an illegal address. EINVAL The ss_sp member of the stack_t structure pointed to by sp is not properly aligned, the ss_size member is too small or is not properly aligned, or the ss_flags member is non-zero. USAGE
The stack_setbounds() function is intended for use by applications that are managing their own alternate stacks. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |Async-Signal-Safe | +-----------------------------+-----------------------------+ SEE ALSO
getustack(2), _stack_grow(3C), stack_getbounds(3C), stack_inbounds(3C), stack_violation(3C), attributes(5) SunOS 5.11 18 Jul 2002 stack_setbounds(3C)
Man Page