HP OpenVMS Systemsask the wizard |
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:
$ HELP/MESSAGE ACCVIO
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.
|