![]() |
![]() 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.
|