LP #1582741: mysqlcheck memory leaks
Description
Environment
Smart Checklist
Activity
lpjirasync January 24, 2018 at 9:29 AM
**Comment from Launchpad by: Laurynas Biveinis on: 23-05-2016 08:15:03
https://github.com/percona/percona-server/pull/521, https://github.com/percona/percona-server/pull/522, https://github.com/percona/percona-server/pull/523
lpjirasync January 24, 2018 at 9:29 AM
**Comment from Launchpad by: Laurynas Biveinis on: 17-05-2016 14:18:37
Fixed in 5.7 by
commit 6d76033a7070ff04d4287169df918e22e1275bb9
Author: Jon Olav Hauglid <jon.hauglid@oracle.com>
Date: Tue Jun 16 14:13:05 2015 +0100
Bug#21246964: ASAN: MEMORY LEAK IN PROCESS_ALL_TABLES()
Bug#21247377: ASAN: MEMORY LEAK IN SHOW_VARIABLE_QUERY_EXTRACTOR / RUN_SQL_FIX_PRIVILEGE_TABLES()
Bug#21253535: ASAN: MEMORY LEAK IN MYSQL_UPGRADE
Fix memory leak in mysqlcheck - process_all_tables().
Close result by calling mysql_free_result() after processing.
Fix memory leaks related to mysql_upgrade:
1) Allocate Instance_callback instances on stack rather than heap.
2) Always call mysql_close() to deallocate memory.
Also fix a valgrind warning,
Conditional jump or move depends on uninitialised value(s)
in Mysql::Tools::Upgrade::Program::fix_privilage_tables_error()
(sic)
Details
Details
Assignee
Reporter
Priority
Smart Checklist
Open Smart Checklist
Smart Checklist

**Reported in Launchpad by Laurynas Biveinis last update 23-05-2016 08:15:21
On 5.5:
rpl.rpl_mysql_upgrade 'mix' w4 [ fail ]
Test ended at 2016-05-12 08:24:49
CURRENT_TEST: rpl.rpl_mysql_upgrade
mysqltest: At line 27: command "$MYSQL_UPGRADE --skip-write-binlog --skip-verbose --force --user=root > $MYSQLTEST_VARDIR/log/mysql_upgrade.log 2>&1" failed
mysql_upgrade.log:
=================================================================
==1278==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 160 byte(s) in 1 object(s) allocated from:
#0 0x7f573e51e54a in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9854a)
#1 0x46b4d5 in my_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:38
#2 0x4144f7 in mysql_store_result /home/laurynas/mysql-server/sql-common/client.c:3952
#3 0x406206 in process_all_databases /home/laurynas/mysql-server/client/mysqlcheck.c:422
#4 0x406206 in main /home/laurynas/mysql-server/client/mysqlcheck.c:957
#5 0x7f573d9b382f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Indirect leak of 8160 byte(s) in 1 object(s) allocated from:
#0 0x7f573e51e54a in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9854a)
#1 0x46b4d5 in my_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:38
#2 0x45a389 in alloc_root /home/laurynas/mysql-server/mysys/my_alloc.c:217
#3 0x40bd99 in cli_read_rows /home/laurynas/mysql-server/sql-common/client.c:1609
#4 0x414647 in mysql_store_result /home/laurynas/mysql-server/sql-common/client.c:3964
#5 0x406206 in process_all_databases /home/laurynas/mysql-server/client/mysqlcheck.c:422
#6 0x406206 in main /home/laurynas/mysql-server/client/mysqlcheck.c:957
#7 0x7f573d9b382f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Indirect leak of 8160 byte(s) in 1 object(s) allocated from:
#0 0x7f573e51e54a in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9854a)
#1 0x46b4d5 in my_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:38
#2 0x45a389 in alloc_root /home/laurynas/mysql-server/mysys/my_alloc.c:217
#3 0x40db77 in unpack_fields /home/laurynas/mysql-server/sql-common/client.c:1463
#4 0x40f35a in cli_read_query_result /home/laurynas/mysql-server/sql-common/client.c:3890
#5 0x411c98 in mysql_real_query /home/laurynas/mysql-server/sql-common/client.c:3930
#6 0x41f4b3 in mysql_query /home/laurynas/mysql-server/libmysql/libmysql.c:704
#7 0x4061f6 in process_all_databases /home/laurynas/mysql-server/client/mysqlcheck.c:422
#8 0x4061f6 in main /home/laurynas/mysql-server/client/mysqlcheck.c:957
#9 0x7f573d9b382f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Indirect leak of 96 byte(s) in 1 object(s) allocated from:
#0 0x7f573e51e54a in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9854a)
#1 0x46b4d5 in my_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:38
#2 0x40bc2c in cli_read_rows /home/laurynas/mysql-server/sql-common/client.c:1586
#3 0x414647 in mysql_store_result /home/laurynas/mysql-server/sql-common/client.c:3964
#4 0x406206 in process_all_databases /home/laurynas/mysql-server/client/mysqlcheck.c:422
#5 0x406206 in main /home/laurynas/mysql-server/client/mysqlcheck.c:957
#6 0x7f573d9b382f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
SUMMARY: AddressSanitizer: 16576 byte(s) leaked in 4 allocation(s).