We're updating the issue view to help you get more done. 

Multi-source: Memory loss warnings on an attempt to create a duplicate connection with a different name

Description

Server was built as BUILD/compile-pentium-debug-max

Debug trace file is also attached.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 Warning: 128 bytes lost, allocated at mysys/array.c:65, sql/rpl_mi.cc:61, sql/sql_par sql/sql_parse.cc:808, sql/sql_connect.cc:1253, sql/sql_connect.cc:1169 Warning: 16 bytes lost, allocated at sql/rpl_mi.cc:48, sql/sql_parse.cc:2361, sql/sq808, sql/sql_connect.cc:1253, sql/sql_connect.cc:1169, perfschema/pfs.cc:1017 Warning: 512 bytes lost, allocated at mysys/array.c:65, mysys/hash.c:92, sql/rpl_tblmrse.cc:2361, sql/sql_parse.cc:5813, sql/sql_parse.cc:1071 ==10948== 116 bytes in 1 blocks are still reachable in loss record 2 of 6 ==10948== at 0x4C28F9F: malloc (vg_replace_malloc.c:236) ==10948== by 0xC6B4CE: sf_malloc (safemalloc.c:105) ==10948== by 0xC5619B: my_malloc (my_malloc.c:41) ==10948== by 0x705DC1: Master_info::Master_info(st_mysql_lex_string*, bool) (rpl_mi ==10948== by 0x6100BA: mysql_execute_command(THD*) (sql_parse.cc:2361) ==10948== by 0x619A16: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_p ==10948== by 0x60CFA1: dispatch_command(enum_server_command, THD*, char*, unsigned ==10948== by 0x60C258: do_command(THD*) (sql_parse.cc:808) ==10948== by 0x70FE62: do_handle_one_connection(THD*) (sql_connect.cc:1253) ==10948== by 0x70F84D: handle_one_connection (sql_connect.cc:1168) ==10948== by 0xB9361A: pfs_spawn_thread (pfs.cc:1015) ==10948== by 0x5895EFB: start_thread (pthread_create.c:304) ==10948== by 0x611959C: clone (clone.S:112) ==10948== 228 bytes in 1 blocks are still reachable in loss record 3 of 6 ==10948== at 0x4C28F9F: malloc (vg_replace_malloc.c:236) ==10948== by 0xC6B4CE: sf_malloc (safemalloc.c:105) ==10948== by 0xC5619B: my_malloc (my_malloc.c:41) ==10948== by 0xC2CE25: init_dynamic_array2 (array.c:65) ==10948== by 0x705EB7: Master_info::Master_info(st_mysql_lex_string*, bool) (rpl_mi ==10948== by 0x6100BA: mysql_execute_command(THD*) (sql_parse.cc:2361) ==10948== by 0x619A16: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_p ==10948== by 0x60CFA1: dispatch_command(enum_server_command, THD*, char*, unsigned ==10948== by 0x60C258: do_command(THD*) (sql_parse.cc:808) ==10948== by 0x70FE62: do_handle_one_connection(THD*) (sql_connect.cc:1253) ==10948== by 0x70F84D: handle_one_connection (sql_connect.cc:1168) ==10948== by 0xB9361A: pfs_spawn_thread (pfs.cc:1015) ==10948== by 0x5895EFB: start_thread (pthread_create.c:304) ==10948== by 0x611959C: clone (clone.S:112) ==10948== 612 bytes in 1 blocks are still reachable in loss record 5 of 6 ==10948== at 0x4C28F9F: malloc (vg_replace_malloc.c:236) ==10948== by 0xC6B4CE: sf_malloc (safemalloc.c:105) ==10948== by 0xC5619B: my_malloc (my_malloc.c:41) ==10948== by 0xC2CE25: init_dynamic_array2 (array.c:65) ==10948== by 0xC327B6: _my_hash_init (hash.c:92) ==10948== by 0x9371E4: table_mapping::table_mapping() (rpl_tblmap.cc:47) ==10948== by 0x701E13: Relay_log_info::Relay_log_info(bool) (rpl_rli.cc:57) ==10948== by 0x705C8F: Master_info::Master_info(st_mysql_lex_string*, bool) (rpl_mi ==10948== by 0x6100BA: mysql_execute_command(THD*) (sql_parse.cc:2361) ==10948== by 0x619A16: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_p ==10948== by 0x60CFA1: dispatch_command(enum_server_command, THD*, char*, unsigned ==10948== by 0x60C258: do_command(THD*) (sql_parse.cc:808) ==10948== by 0x70FE62: do_handle_one_connection(THD*) (sql_connect.cc:1253) ==10948== by 0x70F84D: handle_one_connection (sql_connect.cc:1168) ==10948== by 0xB9361A: pfs_spawn_thread (pfs.cc:1015) ==10948== by 0x5895EFB: start_thread (pthread_create.c:304) ==10948== 17,304 bytes in 1 blocks are definitely lost in loss record 6 of 6 ==10948== at 0x4C28B35: operator new(unsigned long) (vg_replace_malloc.c:261) ==10948== by 0x61008D: mysql_execute_command(THD*) (sql_parse.cc:2361) ==10948== by 0x619A16: mysql_parse(THD*, char*, unsigned int, Parser_state*) (sql_p ==10948== by 0x60CFA1: dispatch_command(enum_server_command, THD*, char*, unsigned ==10948== by 0x60C258: do_command(THD*) (sql_parse.cc:808) ==10948== by 0x70FE62: do_handle_one_connection(THD*) (sql_connect.cc:1253) ==10948== by 0x70F84D: handle_one_connection (sql_connect.cc:1168) ==10948== by 0xB9361A: pfs_spawn_thread (pfs.cc:1015) ==10948== by 0x5895EFB: start_thread (pthread_create.c:304) ==10948== by 0x611959C: clone (clone.S:112)

bzr version-info

1 2 3 4 revision-id: monty@askmonty.org-20120928004505-r6ow2t0ccx5m4ead date: 2012-09-28 03:45:05 +0300 build-date: 2012-09-28 08:28:16 +0400 revno: 3437

Test case (no need to add it to the suite, it will be a part of a bigger test):

cat suite/multi_source/memory_issue.test

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 --connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3) call mtr.add_suppression("Connection 'master1' already exists"); # Start replication from the first master --replace_result $SERVER_MYPORT_1 MYPORT_1 eval change master 'master1' to master_port=$SERVER_MYPORT_1, master_host='127.0.0.1', master_user='root'; start slave 'master1'; set default_master_connection = 'master1'; --source include/wait_for_slave_to_start.inc # Try to configure a connection with the same master # using a different name, should get a conflict --replace_result $SERVER_MYPORT_1 MYPORT_1 --error ER_MASTER_INFO eval change master 'master2' to master_port=$SERVER_MYPORT_1, master_host='127.0.0.1', master_user='root';

Environment

Ubuntu 11.10 x86_64

Status

Assignee

Michael Widenius

Reporter

Elena Stepanova

Priority

Major