HP OpenVMS Systems

ask the wizard
Content starts here

Access Violation (ACCVIO) errors?

» close window

The Question is:

Can you please point me to documentation about interpreting stack dumps and
 accvios? In particular, what does the reason mask mean?
What sort of things (in C)can cause the Program Counter to be corrupted? (I
 wouldn't know how to cause it if I wanted to.)
Also (and completely unrelated), when one declares in C a pointer to a
 function, what is being pointed to? Is  it a structure? (If I do an
 exam/asci:100, I sometimes see the function name, sometimes not.)

The Answer is :

  Please see:
  or please see:
    Error Messages and Recovery manual
  For common programming bugs, please see topic (1661) and (if there
  is shared memory involved) please see topic (2681).
  For previous discussions of the Access Violation (ACCVIO) and
  decoding the stackdump here in Ask The Wizard, please see topics
  (837), (1705), (2195), (2223), (3215), (5533), (6065), (6495), and
  various others.
  The program counter (PC) can become corrupted when the contents of a
  stack frame are overwritten, when a variable is corrupted, when a stack
  frame is removed and a variable within that (removed) stack frame is
  then later referenced, when incorrect or incomplete synchronization
  techniques are used, and in a variety of other situations.
  For details on programming in C on OpenVMS, please see the available
  Compaq C documentation available on the OpenVMS website.  This manual
  includes a description of how to correctly declare a construct known
  as a pointer to a function.
  On OpenVMS Alpha, the C pointer to a function construct points to a
  data structure known as a Procedure Descriptor (PD).  The second
  quadword of the PD (bytes 8 thru 15) contain a pointer to the
  procedure's entry point (the actual machine instructions that
  comprise the procedure).  On OpenVMS VAX, a pointer to a function
  construct points to a word located immediately prior to the first
  VAX instruction of the target routine.  This word is the procedure
  register save mask, and contains a bitmask of the registers that
  must be saved and restored around this call.  Additional details
  of the VAX and Alpha calling standards are included in the OpenVMS
  Calling Standard manual.
  The EXAMINE/ASCII command is a debugger command used to examine a
  specified range of virtual memory in ASCII format.  The command is
  not useful for resolving symbols associated with virtual addresses.
  For introductory tips on programming C on OpenVMS, please see the
  OpenVMS FAQ.

answer written or last revised on ( 7-AUG-2001 )

» close window