=====recently.c
#include "valgrind/valgrind.h"
#include <stdlib.h>
#include <string.h>

int main()
{
     int *const m0 = malloc (1<<16);
     VALGRIND_CREATE_MEMPOOL(m0, (1<<16), 0);  // a new pool inside a 
malloc()ed block

     int *const m1 = (4368/sizeof(int)) + m0;  // point into the interior of 
the pool
     VALGRIND_MEMPOOL_ALLOC(m0, m1, 16);  // "allocate" a block of 16 bytes 
from the pool
     VALGRIND_MEMPOOL_FREE(m0, m1);  // free the allocated block immediately
     memset(m1, 0, 16);  // [error] write into the free()d block

     return 0;
}
=====

==2668== Invalid write of size 8
==2668==    at 0x4C2EFDF: memset (in 
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2668==    by 0x40090B: main (recently.c:13)
==2668==  Address 0x51f7150 is 4,368 bytes inside a recently re-allocated block 
of size 65,536 alloc'd
==2668==    at 0x4C28C50: malloc (in 
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==2668==    by 0x4007BA: main (recently.c:7)

So valgrind is trying to say that memset is writing into a free()d block,
and that the corresponding allocation was moderately recent.
Consult "valgrind --help  |  grep freelist" for hints,
then refer to the documentation or the source code.

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to