From: Bart Van Assche Date: Thu, 4 Jun 2009 09:59:28 +0000 (+0000) Subject: Merged r10191 and r10242 from trunk: fixed a bug in DRD's malloc wrappers that caused... X-Git-Tag: svn/VALGRIND_3_4_1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2687339ca4e1c4764a658ecfa5cc4e2cceab9384;p=thirdparty%2Fvalgrind.git Merged r10191 and r10242 from trunk: fixed a bug in DRD's malloc wrappers that caused 'start' messages to be printed for unrelated memory allocations with address tracing enabled. git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_4_BRANCH@10243 --- diff --git a/drd/drd_main.c b/drd/drd_main.c index 54d2d9cc24..0dc981cc10 100644 --- a/drd/drd_main.c +++ b/drd/drd_main.c @@ -452,7 +452,7 @@ static void drd_post_mem_write(const CorePart part, static __inline__ void drd_start_using_mem(const Addr a1, const SizeT len) { - tl_assert(a1 < a1 + len); + tl_assert(a1 <= a1 + len); if (UNLIKELY(drd_any_address_is_traced())) { diff --git a/drd/drd_malloc_wrappers.c b/drd/drd_malloc_wrappers.c index 7e566047ce..4866d3f095 100644 --- a/drd/drd_malloc_wrappers.c +++ b/drd/drd_malloc_wrappers.c @@ -100,7 +100,9 @@ void* drd_new_block(ThreadId tid, return NULL; } if (is_zeroed) VG_(memset)((void*)p, 0, size); - s_start_using_mem_callback(p, p + size, 0/*ec_uniq*/); + + tl_assert(p <= p + size); + s_start_using_mem_callback(p, size, 0/*ec_uniq*/); // Only update this stat if allocation succeeded. cmalloc_bs_mallocd += size; @@ -211,7 +213,7 @@ void* drd_realloc(ThreadId tid, void* p_old, SizeT new_size) // Allocate a new chunk. mc = create_DRD_Chunk(tid, a_new, new_size); - s_start_using_mem_callback(a_new, a_new + new_size, 0/*ec_uniq*/); + s_start_using_mem_callback(a_new, new_size, 0/*ec_uniq*/); } else { diff --git a/drd/drd_malloc_wrappers.h b/drd/drd_malloc_wrappers.h index c23154afc0..e543129677 100644 --- a/drd/drd_malloc_wrappers.h +++ b/drd/drd_malloc_wrappers.h @@ -30,8 +30,8 @@ #include "pub_tool_execontext.h" // ExeContext -typedef void (*StartUsingMem)(const Addr a1, const Addr a2, UInt ec_uniq); -typedef void (*StopUsingMem)(const Addr a1, const Addr a2); +typedef void (*StartUsingMem)(const Addr a1, const SizeT len, UInt ec_uniq); +typedef void (*StopUsingMem)(const Addr a1, const SizeT len); void drd_register_malloc_wrappers(const StartUsingMem start_using_mem_callback,