Bug #54499 | valgrind warnings for binlog.binlog_stm_do_db with custom patch | ||
---|---|---|---|
Submitted: | 14 Jun 2010 20:54 | Modified: | 7 Nov 2015 8:23 |
Reporter: | Mark Callaghan | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB Plugin storage engine | Severity: | S3 (Non-critical) |
Version: | 5.1.47 | OS: | Any |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | Contribution, custom, innodb, plugin, valgrind |
[14 Jun 2010 20:54]
Mark Callaghan
[14 Jun 2010 21:09]
Mark Callaghan
I think this is a better patch for it diff --git a/storage/innodb_plugin/ha/ha0ha.c b/storage/innodb_plugin/ha/ha0ha.c index 1d69986..cfce55e 100644 --- a/storage/innodb_plugin/ha/ha0ha.c +++ b/storage/innodb_plugin/ha/ha0ha.c @@ -110,6 +110,16 @@ ha_clear( for (i = 0; i < n; i++) { mem_heap_free(table->heaps[i]); } + + mem_free(table->heaps); + table->heaps = NULL; + + for (i = 0; i < table->n_mutexes; i++) { + mutex_free(table->mutexes + i, sync_level); + } + mem_free(table->mutexes); + table->mutexes = NULL; + #endif /* !UNIV_HOTBACKUP */
[14 Jun 2010 23:27]
Mark Callaghan
The patch needs more patches. ha_clear cannot call mutex_free when called by buf_pool_close as sync_close has already been called. I added an argument (call_mutex_free) to cover that. #ifndef UNIV_HOTBACKUP /* Free the memory heaps. */ n = table->n_mutexes; for (i = 0; i < n; i++) { mem_heap_free(table->heaps[i]); } mem_free(table->heaps); table->heaps = NULL; if (call_mutex_free) { /* When this is called by buf_pool_free it is too late to call mutex_free() */ for (i = 0; i < table->n_mutexes; i++) { mutex_free(table->mutexes + i); } } mem_free(table->mutexes); table->mutexes = NULL; #endif /* !UNIV_HOTBACKUP */
[7 Nov 2015 8:23]
MySQL Verification Team
ha_clear in 5.6.27 does free the memory.