Ara.T.Howard wrote:
> i've isolated the bit of code that causes the core dumps to occur
> ...
> now heres the tricky bit.  the core dump doesn't happen here - it 
> happens at some random time later, and then again sometimes it doesn't.

This sort of scenario is almost always caused by a memory corruption,
either an array-out-of-bounds write causing corruption of the memory
allocation arena, or a reference to an object that's been deleted.
I've chased dozens of these up until five or so years ago, when I got
my hands on a copy of Purify. It catches the corruption *at source*,
and has become quite simply indispensable for this (and many other)
tasks.

The world would be a better place if every developer used Purify on
every release. Note that it's *not* the same as most "bounds checker"
type tools; it actually maintains a parallel table of markers for
every memory location, and *rewrites the machine instructions* for every
memory reference so it can also check validity against the marker table.

It's quite simply the bee's knees if you must write in C or a similarly
primitive language :-).

Clifford Heath.