MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


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



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™