mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge a change from mysql-5.1-innodb:
TO DO: Enable this in CMake-based builds. ------------------------------------------------------------ revno: 3474 revision-id: marko.makela@oracle.com-20100520104042-ma2nsscqdvwoph8k parent: marko.makela@oracle.com-20100519081618-h38q02qxuvcowbtk committer: Marko Mäkelä <marko.makela@oracle.com> branch nick: 5.1-innodb timestamp: Thu 2010-05-20 13:40:42 +0300 message: Bug#53593: Add some instrumentation to improve Valgrind sensitivity BUILD/*: Add valgrind_configs=--with-valgrind. BUILD/*: Remove -USAFEMALLOC from valgrind_flags. configure.in: Add AC_ARG_WITH(valgrind) and HAVE_VALGRIND. include/my_sys.h: Define a number of MEM_ wrappers for VALGRIND_ functions. include/my_sys.h: Make TRASH do MEM_UNDEFINED(). include/m_string.h: Remove unused macro bzero_if_purify(A,B). _mymalloc(): Declare MEM_UNDEFINED() on the allocated memory. _myfree(): Declare MEM_NOACCESS() on the freed memory. storage/innobase/include/univ.i: Enable UNIV_DEBUG_VALGRIND based on HAVE_VALGRIND rather than HAVE_purify. Possible things to do: * In my_global.h, remove the defined(HAVE_purify) condition from the _WIN32 uint3korr(). * In my_global.h *int*korr(), use | instead of + in order to keep the Valgrind V bits accurate * Consider replacing HAVE_purify with HAVE_VALGRIND * Use VALGRIND_CREATE_BLOCK, VALGRIND_DISCARD in mem_root and similar places
This commit is contained in:
@@ -190,9 +190,12 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
|
||||
sf_malloc_count++;
|
||||
mysql_mutex_unlock(&THR_LOCK_malloc);
|
||||
|
||||
MEM_CHECK_ADDRESSABLE(data, size);
|
||||
/* Set the memory to the aribtrary wierd value */
|
||||
if ((MyFlags & MY_ZEROFILL) || !sf_malloc_quick)
|
||||
bfill(data, size, (char) (MyFlags & MY_ZEROFILL ? 0 : ALLOC_VAL));
|
||||
if (!(MyFlags & MY_ZEROFILL))
|
||||
MEM_UNDEFINED(data, size);
|
||||
/* Return a pointer to the real data */
|
||||
DBUG_PRINT("exit",("ptr: %p", data));
|
||||
if (sf_min_adress > data)
|
||||
@@ -309,7 +312,9 @@ void _myfree(void *ptr, const char *filename, uint lineno, myf myflags)
|
||||
if (!sf_malloc_quick)
|
||||
bfill(ptr, irem->datasize, (pchar) FREE_VAL);
|
||||
#endif
|
||||
MEM_NOACCESS(ptr, irem->datasize);
|
||||
*((uint32*) ((char*) ptr- sizeof(uint32)))= ~MAGICKEY;
|
||||
MEM_NOACCESS((char*) ptr - sizeof(uint32), sizeof(uint32));
|
||||
/* Actually free the memory */
|
||||
free((char*) irem);
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
Reference in New Issue
Block a user