mysqlbinlog does not free the existing connection before opening new remote one

Bug #1587840 reported by Laurynas Biveinis
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MySQL Server
Unknown
Unknown
Percona Server moved to https://jira.percona.com/projects/PS
Status tracked in 5.7
5.5
Fix Released
Medium
Laurynas Biveinis
5.6
Fix Released
Medium
Laurynas Biveinis
5.7
Fix Released
Medium
Laurynas Biveinis

Bug Description

Copy of http://bugs.mysql.com/bug.php?id=81675:

[1 Jun 11:26] Laurynas Biveinis
Description:
"mysqlbinlog --read-from-remote-server log1 log2" opens a new connection to read log2 without freeing the one used for reading log1.

How to repeat:
On 5.7, with LeakSanitizer-enabled AddressSanitizer:
cmake ... -DWITH_ASAN=ON ...
...
$ ./mtr --debug-server binlog_mysqlbinlog_start_stop
...
binlog.binlog_mysqlbinlog_start_stop 'mix' [ fail ]
        Test ended at 2016-06-01 14:17:00

CURRENT_TEST: binlog.binlog_mysqlbinlog_start_stop

=================================================================
==5002==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 1336 byte(s) in 1 object(s) allocated from:
    #0 0x7fd39899e6e9 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x986e9)
    #1 0x4e939f in my_raw_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:189
    #2 0x4e939f in my_malloc /home/laurynas/mysql-server/mysys/my_malloc.c:54
    #3 0x46a62e in mysql_init /home/laurynas/mysql-server/sql-common/client.c:2446
    #4 0x448569 in safe_connect /home/laurynas/mysql-server/client/mysqlbinlog.cc:2260
    #5 0x448569 in dump_remote_log_entries /home/laurynas/mysql-server/client/mysqlbinlog.cc:2539
    #6 0x448569 in dump_single_log /home/laurynas/mysql-server/client/mysqlbinlog.cc:2328
    #7 0x448569 in dump_multiple_logs /home/laurynas/mysql-server/client/mysqlbinlog.cc:2368
    #8 0x44a6de in main /home/laurynas/mysql-server/client/mysqlbinlog.cc:3430
    #9 0x7fd39789b82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)

(...other connection and SSL-related leaks)

Suggested fix:
At the start of safe_connect(), if mysql != NULL, call mysql_close for it, before mysql_init
[1 Jun 11:35] Laurynas Biveinis
The same issue exists on 5.5 and 5.6, but there it's masked by other LSan/client Valgrind bugs: bug 80014, bug 81674, bug 78223

Tags: asan ci upstream
tags: added: asan ci upstream
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :
Revision history for this message
Yura Sorokin (yura-sorokin) wrote :

Fixed by Oracle in 5.5.52

Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-1718

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.