On 12.02.2013 10:12, Paul Menzel wrote:
> Dear Matthias,
>
>
> I am new to Valgrind too. Reading the Mailing Lists and IRC Web page [1]
> there is also a developer list, where your patch might get more
> attention.
>
>
> Am Dienstag, den 12.02.2013, 07:13 +0100 schrieb Matthias Schwarzott:
>
>> Currently the valgrind-message for use-after-free for a memory pool
>> consists of the execution callstack and the callstack, where the
>> superblock was allocated. To better diagnose it I wanted to get also the
>> callstack of the place where MEMPOOL_FREE was called.
> Sounds like a nice idea to me.
>
>> The attached patch uses the new fields added for use-after-free messages
>> that show two callstacks.
>> It is just a proof of concept.
>> How could it be improved?
> Could you show a trace without and with your patch applied?
>
testcase memcheck/test/clireq_nofill before:
*s=0x5 after MEMPOOL_ALLOC
==21626== Invalid read of size 1
==21626==    at 0x400A52: main (clireq_nofill.c:23)
==21626==  Address 0x4c58040 is 0 bytes inside a recently re-allocated 
block of size 40 alloc'd
==21626==    at 0x4A091AD: malloc (vg_replace_malloc.c:270)
==21626==    by 0x40091A: main (clireq_nofill.c:16)
==21626==
*s=0x5 after MEMPOOL_FREE
*s=0x5 after second MEMPOOL_ALLOC
*s=0x5 after MALLOCLIKE_BLOCK
==21626== Invalid read of size 1
==21626==    at 0x400C9B: main (clireq_nofill.c:36)
==21626==  Address 0x4c580b0 is 0 bytes inside a recently re-allocated 
block of size 40 alloc'd
==21626==    at 0x4A091AD: malloc (vg_replace_malloc.c:270)
==21626==    by 0x400B65: main (clireq_nofill.c:29)
==21626==
*s=0x5 after FREELIKE_BLOCK

after:
*s=0x5 after MEMPOOL_ALLOC
==24145== Invalid read of size 1
==24145==    at 0x400A52: main (clireq_nofill.c:23)
==24145==  Address 0x4c57040 is 0 bytes inside a recently re-allocated 
block of size 40 alloc'd
==24145==    at 0x4A08C8F: malloc (vg_replace_malloc.c:270)
==24145==    by 0x40091A: main (clireq_nofill.c:16)
==24145==   block was re-alloced at
==24145==    at 0x400A43: main (clireq_nofill.c:22)
==24145==
*s=0x5 after MEMPOOL_FREE
*s=0x5 after second MEMPOOL_ALLOC
*s=0x5 after MALLOCLIKE_BLOCK
==24145== Invalid read of size 1
==24145==    at 0x400C9B: main (clireq_nofill.c:36)
==24145==  Address 0x4c570b0 is 0 bytes inside a recently re-allocated 
block of size 40 alloc'd
==24145==    at 0x4A08C8F: malloc (vg_replace_malloc.c:270)
==24145==    by 0x400B65: main (clireq_nofill.c:29)
==24145==   block was re-alloced at
==24145==    at 0x400C8C: main (clireq_nofill.c:35)
==24145==
*s=0x5 after FREELIKE_BLOCK
*s=0x5 after second MALLOCLIKE_BLOCK

I wonder if this will work in all cases. And maybe the text for the 
third callstack could be changed to "block was freed at".

I will create a bug ticket to track this.

Regards
Matthias

------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to