tracing malloc/free call

Marco Atzeri marco.atzeri@gmail.com
Fri Jan 16 09:08:00 GMT 2015


On 1/15/2015 8:59 PM, Alexander.Kleinsorge@gmx.de wrote:
> Hi Marco,
> freeing an address that is not alligned to typically 4 or 8 bytes is
> never possible,
> because malloc would never return such.
> Your pointer ends with 0x..1 so it cannot be alligned on any architecture.
> regards,
> Alexander

I know. The application is crashing.

It is clearly a free call with a corrupted pointer,
but not knowing the caller address make difficult to
identify what is corrupting the pointer.


> Your Post:
>
> Debugging a program I am trying to catch where this call is happening
>
> 17 1499678 [main] ncview 1484 free: (0x6000D7961), called by 0x180115A0B
>
> unfortunately the 0x180115A0B address is not real caller address
>
> /usr/src/debug/cygwin-1.7.33-1/winsup/cygwin/malloc_wrapper.cc
>
> extern "C" void
> free (void *p)
> {
>    malloc_printf ("(%p), called by %p", p, __builtin_return_address (0));
>    if (!use_internal)
>      user_data->free (p);
>    else
>      {
>        __malloc_lock ();
>        dlfree (p);
>        __malloc_unlock ();
>      }
> }
>
>
> Any way to improve the tracing ?
> $ uname -svr
> CYGWIN_NT-6.1 1.7.33-2(0.280/5/3) 2014-11-13 15:47
>
> Regards
> Marco
>

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list