=====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
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users