Jed,

    Stop, I've decided I don't like this approach, it mixed the low-level 
malloc() stuff with the higher level PETSc object stuff. 

    We already maintain a list of PetscObjects in the file inherit.c   So we 
can use the function PetscObjectsView() to print out all the non-destroyed 
objects. All we need to do is a add support to PetscObjectsView() to snag the 
the stack list for the first malloc in each object (which is created with 
PetscMalloc()) and print that out with the object info.  Note that 
PetscTrMallocDefault() uses PetscStackCopy() which somehow keeps the entire 
stack at the malloc, this could be accessed somehow in PetscObjectsView() to 
get the stack where the object was malloced.

   Barry







On Dec 8, 2012, at 6:20 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Sat, Dec 8, 2012 at 4:17 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>    I was thinking of just marking the first memory allocation for each 
> object, like the PetscNew(struct tp,&(h) with a bool (another record in 
> TRSPACE), then -malloc_dump_objects would be just like -malloc_dump except 
> only dump memory with that mark and hence one dump for each object. Nothing 
> fancy but get's the job done.   Could have PetscNewMark() used for this 
> purpose.
> 
> So just mark it with a Bool rather than the classid. That's fine, but the 
> extensible malloc interfaces need to be extended to support the extra routine.

Reply via email to