#At file:///home/marko/innobase/dev/mysql2a/mysql-5.5/ based on revid:davi.arnaut@stripped0nm27nrmv5
3414 Marko Mäkelä 2011-05-31
Bug#12606344 - ADD VALGRIND DIAGNOSTICS TO MTR_START, MTR_COMMIT
mtr_start(): Declare the mtr memory area uninitialized in Valgrind
before initializing the fields.
mtr_commit(): Declare everything uninitialized except
mtr->start_lsn, mtr->end_lsn and mtr->state.
modified:
storage/innobase/include/mtr0mtr.ic
storage/innobase/mtr/mtr0mtr.c
=== modified file 'storage/innobase/include/mtr0mtr.ic'
--- a/storage/innobase/include/mtr0mtr.ic revid:davi.arnaut@strippedm-20110530151722-pi46y40nm27nrmv5
+++ b/storage/innobase/include/mtr0mtr.ic revid:marko.makela@stripped074214-198n0vptgbz8ynyq
@@ -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));
=== modified file 'storage/innobase/mtr/mtr0mtr.c'
--- a/storage/innobase/mtr/mtr0mtr.c revid:davi.arnaut@stripped10530151722-pi46y40nm27nrmv5
+++ b/storage/innobase/mtr/mtr0mtr.c revid:marko.makela@strippedn0vptgbz8ynyq
@@ -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. */
+ {
+ lsn_t start_lsn = mtr->start_lsn;
+ lsn_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
Attachment: [text/bzr-bundle] bzr/marko.makela@oracle.com-20110531074214-198n0vptgbz8ynyq.bundle
| Thread |
|---|
| • bzr commit into mysql-5.5 branch (marko.makela:3414) Bug#12606344 | marko.makela | 31 May |