[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

C Signal Handling?

» close window

The Question is:

 
using: Compaq C++ V6.2-048 for OpenVMS Alpha V7.3
 
I'm trying to get back control after a stack overflow using sigstack() and
 sigaction().
 
The call to sigstack() return 0, errno is 0.
 
But the call seems to have no effect.
An automatic variable of the signal handler
has a similar address as a normal auto variable.
It is *not* located within the area passed to
sigstack().
 
The same program runs fine at solaris OS.
 
Doc for sigstack() mention: "VAX only".
But what is the alternative for alpha systems?
sigaltstack() is unavailable too.


The Answer is :

 
  Per the C documentation, sigstack is not implemented on OpenVMS Alpha.
 
  Please contact the support center, as details of the stack overflow
  problem and the particular error sequence(s) and the C code involved
  will all be of central interest here.
 
  Details of signal handling and related programming are included in the
  C programming documentation and in the OpenVMS Programming Concepts
  manual.  OpenVMS does provide full signal handling capabilities, and
  the C signal-related routines are typically built on the underlying
  OpenVMS signal handling implementation.
 
  For generic signal handling, you will want to have variables allocated
  in static storage, in an external, or otherwise declared in a call
  frame that is always present during the particular signaling.  (Exit
  handlers have the additional requirement that there are effectively
  no call frames active when the exit handler is running, so the data
  must be stored in an external or a static or similar construct.)
 
  For information on programming and re-entrancy -- various of the data
  issues raised here are the same as those of re-entrancy -- please see
  topic (1661) and other topics referenced there.
 

answer written or last revised on ( 16-JUN-2004 )

» close window