[MDEV-29426] Some connect engine tests fail with LeakSanitizer errors Created: 2022-08-31  Updated: 2022-09-19  Resolved: 2022-09-19

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - Connect, Tests
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10
Fix Version/s: 10.3.37

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Andrew Hutchings
Resolution: Fixed Votes: 0
Labels: None


 Description   

10.3 129616c7

$ perl ./mtr connect.bson
 
connect.bson                             [ pass ]    235
***Warnings generated in error logs during shutdown after running tests: connect.bson
 
==1298428==ERROR: LeakSanitizer: detected memory leaks
SUMMARY: AddressSanitizer: 12277 byte(s) leaked in 2 allocation(s).
 
Exception 666: Cannot write expanded column when Pretty is not 2
 
=================================================================
==1298428==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 9432 byte(s) in 1 object(s) allocated from:
    #0 0x74c45d in operator new(unsigned long) (/mnt8t/bld/10.3-asan-nightly/bin/mysqld+0x74c45d)
    #1 0x7f4c903b8068  (<unknown module>)
    #2 0x7f4c90574715  (<unknown module>)
    #3 0x7f4c902c7629  (<unknown module>)
    #4 0x7f4c902bdc7b  (<unknown module>)
    #5 0x7f4c9027d06e  (<unknown module>)
    #6 0x7f4c90297795  (<unknown module>)
    #7 0xde7013 in get_schema_stat_record(THD*, TABLE_LIST*, TABLE*, bool, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*) /data/src/10.3/sql/sql_show.cc:6722:25
    #8 0xdaca44 in fill_schema_table_by_open(THD*, st_mem_root*, bool, TABLE*, st_schema_table*, st_mysql_const_lex_string*, st_mysql_const_lex_string*, Open_tables_backup*, bool) /data/src/10.3/sql/sql_show.cc:4707:13
    #9 0xdaa0ce in get_all_tables(THD*, TABLE_LIST*, Item*) /data/src/10.3/sql/sql_show.cc:5217:12
    #10 0xdd6759 in get_schema_tables_result(JOIN*, enum_schema_table_state) /data/src/10.3/sql/sql_show.cc:9030:11
    #11 0xcc3398 in JOIN::exec_inner() /data/src/10.3/sql/sql_select.cc:4134:7
    #12 0xcc084e in JOIN::exec() /data/src/10.3/sql/sql_select.cc:3965:3
    #13 0xc334dc in mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /data/src/10.3/sql/sql_select.cc:4374:9
    #14 0xc320c4 in handle_select(THD*, LEX*, select_result*, unsigned long) /data/src/10.3/sql/sql_select.cc:372:10
    #15 0xb7078d in execute_sqlcom_select(THD*, TABLE_LIST*) /data/src/10.3/sql/sql_parse.cc:6340:12
    #16 0xb53417 in mysql_execute_command(THD*) /data/src/10.3/sql/sql_parse.cc:3871:12
    #17 0xb42fc6 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.3/sql/sql_parse.cc:7871:18
    #18 0xb33b4c in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.3/sql/sql_parse.cc:1852:7
    #19 0xb3ce4c in do_command(THD*) /data/src/10.3/sql/sql_parse.cc:1398:17
    #20 0x1083096 in do_handle_one_connection(CONNECT*) /data/src/10.3/sql/sql_connect.cc:1403:11
    #21 0x1082763 in handle_one_connection /data/src/10.3/sql/sql_connect.cc:1308:3
    #22 0x2e99121 in pfs_spawn_thread /data/src/10.3/storage/perfschema/pfs.cc:1869:3
    #23 0x7f4c9884dea6 in start_thread nptl/pthread_create.c:477:8
 
Indirect leak of 2845 byte(s) in 1 object(s) allocated from:
    #0 0x71c7bd in malloc (/mnt8t/bld/10.3-asan-nightly/bin/mysqld+0x71c7bd)
    #1 0x7f4c903b8618  (<unknown module>)
    #2 0x7f4c903b8420  (<unknown module>)
    #3 0x7f4c90574715  (<unknown module>)
    #4 0x7f4c902c7629  (<unknown module>)
    #5 0x7f4c902bdc7b  (<unknown module>)
    #6 0x7f4c9027d06e  (<unknown module>)
    #7 0x7f4c90297795  (<unknown module>)
    #8 0xde7013 in get_schema_stat_record(THD*, TABLE_LIST*, TABLE*, bool, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*) /data/src/10.3/sql/sql_show.cc:6722:25
    #9 0xdaca44 in fill_schema_table_by_open(THD*, st_mem_root*, bool, TABLE*, st_schema_table*, st_mysql_const_lex_string*, st_mysql_const_lex_string*, Open_tables_backup*, bool) /data/src/10.3/sql/sql_show.cc:4707:13
    #10 0xdaa0ce in get_all_tables(THD*, TABLE_LIST*, Item*) /data/src/10.3/sql/sql_show.cc:5217:12
    #11 0xdd6759 in get_schema_tables_result(JOIN*, enum_schema_table_state) /data/src/10.3/sql/sql_show.cc:9030:11
    #12 0xcc3398 in JOIN::exec_inner() /data/src/10.3/sql/sql_select.cc:4134:7
    #13 0xcc084e in JOIN::exec() /data/src/10.3/sql/sql_select.cc:3965:3
    #14 0xc334dc in mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /data/src/10.3/sql/sql_select.cc:4374:9
    #15 0xc320c4 in handle_select(THD*, LEX*, select_result*, unsigned long) /data/src/10.3/sql/sql_select.cc:372:10
    #16 0xb7078d in execute_sqlcom_select(THD*, TABLE_LIST*) /data/src/10.3/sql/sql_parse.cc:6340:12
    #17 0xb53417 in mysql_execute_command(THD*) /data/src/10.3/sql/sql_parse.cc:3871:12
    #18 0xb42fc6 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.3/sql/sql_parse.cc:7871:18
    #19 0xb33b4c in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.3/sql/sql_parse.cc:1852:7
    #20 0xb3ce4c in do_command(THD*) /data/src/10.3/sql/sql_parse.cc:1398:17
    #21 0x1083096 in do_handle_one_connection(CONNECT*) /data/src/10.3/sql/sql_connect.cc:1403:11
    #22 0x1082763 in handle_one_connection /data/src/10.3/sql/sql_connect.cc:1308:3
    #23 0x2e99121 in pfs_spawn_thread /data/src/10.3/storage/perfschema/pfs.cc:1869:3
    #24 0x7f4c9884dea6 in start_thread nptl/pthread_create.c:477:8
 
SUMMARY: AddressSanitizer: 12277 byte(s) leaked in 2 allocation(s).

The failures started happening in the latest release (10.3.36 etc.), apparently after pre-release Connect merge.

There may be more than one test like that, please run the whole suite after fixing.



 Comments   
Comment by Andrew Hutchings [ 2022-09-02 ]

Cause is BSONDEF calling PlugInit() but not calling PlugExit() to clean up.

Comment by Andrew Hutchings [ 2022-09-02 ]

Trace that fills in the missing parts.

=================================================================
==168246==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 9432 byte(s) in 1 object(s) allocated from:
    #0 0x7fc1de76f1c7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x56105e974376 in PlugInit /home/linuxjedi/Git/mariadb-server/storage/connect/plugutil.cpp:154
    #2 0x56105ea7a1ba in BSONDEF::GetTable(_global*, MODE) /home/linuxjedi/Git/mariadb-server/storage/connect/tabbson.cpp:1256
    #3 0x56105e933826 in MYCAT::GetTable(_global*, XTAB*, MODE, char const*) /home/linuxjedi/Git/mariadb-server/storage/connect/mycat.cc:561
    #4 0x56105e92c6d4 in CntGetTDB(_global*, char const*, MODE, ha_connect*) /home/linuxjedi/Git/mariadb-server/storage/connect/connect.cc:217
    #5 0x56105e90526e in ha_connect::GetTDB(_global*) /home/linuxjedi/Git/mariadb-server/storage/connect/ha_connect.cc:1994
    #6 0x56105e917d5c in ha_connect::info(unsigned int) /home/linuxjedi/Git/mariadb-server/storage/connect/ha_connect.cc:4393
    #7 0x56105d850e04 in get_schema_stat_record /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:6745
    #8 0x56105d838fb7 in fill_schema_table_by_open /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:4711
    #9 0x56105d83bbc0 in get_all_tables(THD*, TABLE_LIST*, Item*) /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:5225
    #10 0x56105d8704cf in get_schema_tables_result(JOIN*, enum_schema_table_state) /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:8877
    #11 0x56105d73bc11 in JOIN::exec_inner() /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:4741
    #12 0x56105d739998 in JOIN::exec() /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:4562
    #13 0x56105d73df46 in mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:5041
    #14 0x56105d70da7e in handle_select(THD*, LEX*, select_result*, unsigned long) /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:554
    #15 0x56105d6707a3 in execute_sqlcom_select /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:6256
    #16 0x56105d65f105 in mysql_execute_command(THD*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:3946
    #17 0x56105d67bc1c in mysql_parse(THD*, char*, unsigned int, Parser_state*) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:8030
    #18 0x56105d65174a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:1896
    #19 0x56105d64e44c in do_command(THD*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:1409
    #20 0x56105dac247d in do_handle_one_connection(CONNECT*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_connect.cc:1418
    #21 0x56105dac1d27 in handle_one_connection /home/linuxjedi/Git/mariadb-server/sql/sql_connect.cc:1312
    #22 0x56105e75befa in pfs_spawn_thread /home/linuxjedi/Git/mariadb-server/storage/perfschema/pfs.cc:2201
    #23 0x7fc1dd86fb42 in start_thread nptl/pthread_create.c:442
    #24 0x7fc1dd9019ff  (/lib/x86_64-linux-gnu/libc.so.6+0x1269ff)
 
Indirect leak of 2845 byte(s) in 1 object(s) allocated from:
    #0 0x7fc1de76d867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
    #1 0x56105e975483 in AllocSarea /home/linuxjedi/Git/mariadb-server/storage/connect/plugutil.cpp:478
    #2 0x56105e97460e in PlugInit /home/linuxjedi/Git/mariadb-server/storage/connect/plugutil.cpp:174
    #3 0x56105ea7a1ba in BSONDEF::GetTable(_global*, MODE) /home/linuxjedi/Git/mariadb-server/storage/connect/tabbson.cpp:1256
    #4 0x56105e933826 in MYCAT::GetTable(_global*, XTAB*, MODE, char const*) /home/linuxjedi/Git/mariadb-server/storage/connect/mycat.cc:561
    #5 0x56105e92c6d4 in CntGetTDB(_global*, char const*, MODE, ha_connect*) /home/linuxjedi/Git/mariadb-server/storage/connect/connect.cc:217
    #6 0x56105e90526e in ha_connect::GetTDB(_global*) /home/linuxjedi/Git/mariadb-server/storage/connect/ha_connect.cc:1994
    #7 0x56105e917d5c in ha_connect::info(unsigned int) /home/linuxjedi/Git/mariadb-server/storage/connect/ha_connect.cc:4393
    #8 0x56105d850e04 in get_schema_stat_record /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:6745
    #9 0x56105d838fb7 in fill_schema_table_by_open /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:4711
    #10 0x56105d83bbc0 in get_all_tables(THD*, TABLE_LIST*, Item*) /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:5225
    #11 0x56105d8704cf in get_schema_tables_result(JOIN*, enum_schema_table_state) /home/linuxjedi/Git/mariadb-server/sql/sql_show.cc:8877
    #12 0x56105d73bc11 in JOIN::exec_inner() /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:4741
    #13 0x56105d739998 in JOIN::exec() /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:4562
    #14 0x56105d73df46 in mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:5041
    #15 0x56105d70da7e in handle_select(THD*, LEX*, select_result*, unsigned long) /home/linuxjedi/Git/mariadb-server/sql/sql_select.cc:554
    #16 0x56105d6707a3 in execute_sqlcom_select /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:6256
    #17 0x56105d65f105 in mysql_execute_command(THD*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:3946
    #18 0x56105d67bc1c in mysql_parse(THD*, char*, unsigned int, Parser_state*) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:8030
    #19 0x56105d65174a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:1896
    #20 0x56105d64e44c in do_command(THD*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_parse.cc:1409
    #21 0x56105dac247d in do_handle_one_connection(CONNECT*, bool) /home/linuxjedi/Git/mariadb-server/sql/sql_connect.cc:1418
    #22 0x56105dac1d27 in handle_one_connection /home/linuxjedi/Git/mariadb-server/sql/sql_connect.cc:1312
    #23 0x56105e75befa in pfs_spawn_thread /home/linuxjedi/Git/mariadb-server/storage/perfschema/pfs.cc:2201
    #24 0x7fc1dd86fb42 in start_thread nptl/pthread_create.c:442
    #25 0x7fc1dd9019ff  (/lib/x86_64-linux-gnu/libc.so.6+0x1269ff)
 
SUMMARY: AddressSanitizer: 12277 byte(s) leaked in 2 allocation(s).

Comment by Andrew Hutchings [ 2022-09-02 ]

Found cause of leak and now all regular mtr test cases pass with ASAN.

Comment by Andrew Hutchings [ 2022-09-19 ]

Fix merged.

Generated at Thu Feb 08 10:08:29 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.