|
What version of C are you using? DEC C, or the older VAX C? What
version? (OpenVMS VAX V7.1 and DEC C V5.5 are the current product
releases.)
In my experience, this sort of problem almost always points to a
user data corruption -- probably an overrun of some sort. (I've
encountered and even created a few of these myself over the years.)
I'd strongly recommend instrumenting your malloc and free code by
placing a "wrapper" around the malloc and free calls -- placing a
quadword "fencepost" at the front and the back of the memory that
is actually allocated, loading it with a known value at allocate
and checking the value at deallocate, and returning the allocated
memory -- less the two quadwords -- to the caller of the "wrapper"
routine. These wrappers and fenceposts can be invaluable at catching
memory stompers of all manner.
|