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

> On Sat, Dec 8, 2012 at 11:18 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> On Dec 8, 2012, at 12:13 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> 
> > Sounds good to me.
> 
>    Note if we somehow specially mark a malloc in the creation of PetscHeader 
> we may not even need to have a separate data structure for keeping track of 
> object mallocs. Just have a special PetscMallocDump() type of function that 
> only prints the stacks for each new object (and not for every malloc).
> 
> Okay, so add a field to TRSPACE to record object class, then have 
> PetscLogObjCreateDefault() call a PetscTrMallocSetClass(void 
> *malloced_addr,PetscTrMallocClass traceclass) to change the tracing class of 
> an existing piece of memory (the implementation can walk the tables to find 
> the memory, though in the common case, it will already be at head). Then we 
> add support for "-malloc_dump_class mat,ksp" (no argument means trace all 
> objects).
> 
> Sensible or overkill?

   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. 

   Barry


Reply via email to