diff --git a/storage/innobase/include/mtr0mtr.ic b/storage/innobase/include/mtr0mtr.ic index 3d87eea2710..1db4a4bd735 100644 --- a/storage/innobase/include/mtr0mtr.ic +++ b/storage/innobase/include/mtr0mtr.ic @@ -37,6 +37,8 @@ mtr_start( /*======*/ mtr_t* mtr) /*!< out: mini-transaction */ { + UNIV_MEM_INVALID(mtr, sizeof *mtr); + dyn_array_create(&(mtr->memo)); dyn_array_create(&(mtr->log)); diff --git a/storage/innobase/mtr/mtr0mtr.c b/storage/innobase/mtr/mtr0mtr.c index 88e698ed818..439b429db43 100644 --- a/storage/innobase/mtr/mtr0mtr.c +++ b/storage/innobase/mtr/mtr0mtr.c @@ -265,9 +265,20 @@ mtr_commit( mtr_memo_pop_all(mtr); #endif /* !UNIV_HOTBACKUP */ - ut_d(mtr->state = MTR_COMMITTED); dyn_array_free(&(mtr->memo)); dyn_array_free(&(mtr->log)); +#ifdef UNIV_DEBUG_VALGRIND + /* Declare everything uninitialized except + mtr->start_lsn, mtr->end_lsn and mtr->state. */ + { + ib_uint64_t start_lsn = mtr->start_lsn; + ib_uint64_t end_lsn = mtr->end_lsn; + UNIV_MEM_INVALID(mtr, sizeof *mtr); + mtr->start_lsn = start_lsn; + mtr->end_lsn = end_lsn; + } +#endif /* UNIV_DEBUG_VALGRIND */ + ut_d(mtr->state = MTR_COMMITTED); } #ifndef UNIV_HOTBACKUP