Standard C Library Functions stackviolation(3C)
NAME
stackviolation - determine stack boundary violation event
SYNOPSIS
#include
int stackviolation(int sig, const siginfot *sip,
const ucontextt *ucp);
DESCRIPTION
The stackviolation() 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 stackviolation() 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.
ERORS
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 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 void
handler(int sig, siginfot *sip, void *p)
{
ucontextt *ucp = p;
const char *str;
if (stackviolation(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 stackviolation(3C)
(void) write(STDERFILENO, str, strlen(str));
exit(1);
}
int
main(int argc, char **argv)
{
struct sigaction sa;
stackt altstack;
altstack.sssize = SIGSTKSZ;
altstack.sssp = malloc(SIGSTKSZ);
altstack.ssflags = 0;
(void) sigaltstack(&altstack, NUL);
sa.sasigaction = handler;
(void) sigfillset(&sa.samask);
sa.saflags = SAONSTACK SASIGINFO;
(void) sigaction(SIGSEGV, &sa, NUL);
/*
* The application is now set up to use stackviolation(3C).
*/
return (0);
}
USAGE
An application typically uses stackviolation() in a signal
handler that has been installed for SIGSEGV using sigac-
tion(2) with the SASIGINFO flag set and is configured to
run on an alternate signal stack.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 18 Jul 2002 2
Standard C Library Functions stackviolation(3C)
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Evolving
MT-Level Async-Signal-Safe
SEE ALSO
sigaction(2), sigaltstack(2), stackgetbounds(3C),
stackinbounds(3C), stacksetbounds(3C), attributes(5)
SunOS 5.11 Last change: 18 Jul 2002 3
|