Commit graph

2 commits

Author SHA1 Message Date
Marko Mäkelä
963b19861f 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
2010-05-20 14:43:06 +03:00
unknown
d48e864f2f Bug#25396
"Valgrind leak in closecon_handlerton"
  plugin_shutdown() calls plugin_deinitialize() which calls ha_finalize_handlerton().
  ndbcluster_end() fails to wait for the ndb utility thread to exit which results in
  the handlerton struct being freed before the ndb utility thread has destroyed it's THD
  but before the plugin has been marked as UNINITIALIZED

Bug is caused by misuse of abort_loops variable and not locking mutex during calls to
pthread condition variable functions causing a race in valgrind's pthread_cond_wait
implementation.


sql/ha_ndbcluster.cc:
  Bug25396
  Valgrind requires that mutex be held during call to pthread_cond_signal.
  Change pthread_cond_timedwait() to pthread_cond_wait() where the timeout is not needed.
  Ensure that appropiate variables are protected by mutex.
  Remove use of abort_loop global variable.
  Ensure that ndbcluster_end waits for util thread to exit.
  Add an extra cond_var as insurance against non-conforming pthreads implementations.
sql/mysqld.cc:
  Bug25386
  Valgrind requires that mutex be held during call to pthread_cond_signal.
BUILD/compile-amd64-valgrind-max:
  New BitKeeper file ``BUILD/compile-amd64-valgrind-max''
2007-01-23 05:09:14 -08:00