tracing malloc/free call

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Jan 16 19:50:00 GMT 2015


On Jan 16 18:33, Marco Atzeri wrote:
> On 1/16/2015 5:22 PM, Corinna Vinschen wrote:
> >On Jan 16 16:44, Corinna Vinschen wrote:
> >>On Jan 16 15:23, Marco Atzeri wrote:
> >>>Attached patch that allows tracking of original caller,
> >>>for the 4 memory allocation calls.
> >>
> >>Thanks for the patch, but it won't work nicely either this way.  The
> >>problem is that, in theory, the code has to differ between internal and
> >>external callers.  Internal callers (that is, Cygwin functions itself)
> >>don't hop into the function via _sigfe/_sigbe.  Thus the output for
> >>internal callers of malloc/free is now wrong with your patch.
> 
> I missed that point. ;-)
> First time I look at these inside details of cygwin

Hopefully not your last :)  Feel free to ask on the devs list if you
have questions about the code.

> >>The solution for this problem would be a test which checks if the return
> >>address is the _sigbe function and if so, returns *(_my_tls.stackptr-1),
> >>otherwise __builtin_return_address(0).  However, the symbol _sigbe is
> >>not exported since, so far, it was only used inside _sigfe.  This needs
> >>a bit of tweaking.  I'll have a look.
> >
> >I applied a patch to print the right caller address.  I created a new
> >macro caller_return_address() for reuse, should we have a desire to
> >print the caller address in other parts of the code.
> >
> >I'm going to create a snapshot with this change.  Please give it
> >a try.
> 
> It works like charm.
> Much more easy to find misalignment between
> malloc/calloc/realloc and free calls

I'm glad it works for you, too.

Btw., did you see my PM?


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20150116/d9d5d4b0/attachment.sig>


More information about the Cygwin-patches mailing list