[MDEV-31454] LeakSanitizer errors in ha_innobase::open after gcol.innodb_virtual_debug Created: 2023-06-11  Updated: 2024-01-22

Status: Open
Project: MariaDB Server
Component/s: Virtual Columns
Affects Version/s: 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Nikita Malyavin
Resolution: Unresolved Votes: 0
Labels: not-10.5+


 Description   

10.4 f5dceafd

gcol.innodb_virtual_debug 'innodb'       [ pass ]   1145
***Warnings generated in error logs during shutdown after running tests: gcol.innodb_virtual_debug
 
==1784045==ERROR: LeakSanitizer: detected memory leaks
SUMMARY: AddressSanitizer: 608 byte(s) leaked in 6 allocation(s).
 
==1784045==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 120 byte(s) in 1 object(s) allocated from:
    #0 0x7f6f448b9780 in operator new(unsigned long, std::nothrow_t const&) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:101
    #1 0x55d299583c02 in ha_innobase::open(char const*, int, unsigned int) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6311
    #2 0x55d298bdcf47 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/10.4/sql/handler.cc:2808
    #3 0x55d29874b0c4 in open_table_from_share(THD*, TABLE_SHARE*, st_mysql_const_lex_string const*, unsigned int, unsigned int, unsigned int, TABLE*, bool, List<String>*) /data/src/10.4/sql/table.cc:4144
    #4 0x55d29829af59 in open_table(THD*, TABLE_LIST*, Open_table_context*) /data/src/10.4/sql/sql_base.cc:2109
    #5 0x55d29869b228 in mysql_inplace_alter_table /data/src/10.4/sql/sql_table.cc:8003
    #6 0x55d2986ad2b8 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool) /data/src/10.4/sql/sql_table.cc:10451
    #7 0x55d29842ee98 in mysql_execute_command(THD*) /data/src/10.4/sql/sql_parse.cc:4254
    #8 0x55d298449462 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.4/sql/sql_parse.cc:8008
    #9 0x55d29841f7a5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.4/sql/sql_parse.cc:1857
    #10 0x55d29841c314 in do_command(THD*) /data/src/10.4/sql/sql_parse.cc:1378
    #11 0x55d29881b0b9 in do_handle_one_connection(CONNECT*) /data/src/10.4/sql/sql_connect.cc:1420
    #12 0x55d29881a9d0 in handle_one_connection /data/src/10.4/sql/sql_connect.cc:1324
    #13 0x55d299487aed in pfs_spawn_thread /data/src/10.4/storage/perfschema/pfs.cc:1869
    #14 0x7f6f441c8fd3 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 288 byte(s) in 2 object(s) allocated from:
    #0 0x7f6f448b89cf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x55d29958212b in innobase_build_v_templ(TABLE const*, dict_table_t const*, dict_vcol_templ_t*, dict_add_v_col_t const*, bool) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6003
    #2 0x55d299583ca5 in ha_innobase::open(char const*, int, unsigned int) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6312
    #3 0x55d298bdcf47 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/10.4/sql/handler.cc:2808
    #4 0x55d29874b0c4 in open_table_from_share(THD*, TABLE_SHARE*, st_mysql_const_lex_string const*, unsigned int, unsigned int, unsigned int, TABLE*, bool, List<String>*) /data/src/10.4/sql/table.cc:4144
    #5 0x55d29829af59 in open_table(THD*, TABLE_LIST*, Open_table_context*) /data/src/10.4/sql/sql_base.cc:2109
    #6 0x55d29869b228 in mysql_inplace_alter_table /data/src/10.4/sql/sql_table.cc:8003
    #7 0x55d2986ad2b8 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool) /data/src/10.4/sql/sql_table.cc:10451
    #8 0x55d29842ee98 in mysql_execute_command(THD*) /data/src/10.4/sql/sql_parse.cc:4254
    #9 0x55d298449462 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.4/sql/sql_parse.cc:8008
    #10 0x55d29841f7a5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.4/sql/sql_parse.cc:1857
    #11 0x55d29841c314 in do_command(THD*) /data/src/10.4/sql/sql_parse.cc:1378
    #12 0x55d29881b0b9 in do_handle_one_connection(CONNECT*) /data/src/10.4/sql/sql_connect.cc:1420
    #13 0x55d29881a9d0 in handle_one_connection /data/src/10.4/sql/sql_connect.cc:1324
    #14 0x55d299487aed in pfs_spawn_thread /data/src/10.4/storage/perfschema/pfs.cc:1869
    #15 0x7f6f441c8fd3 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 144 byte(s) in 1 object(s) allocated from:
    #0 0x7f6f448b89cf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x55d299581c82 in innobase_build_v_templ(TABLE const*, dict_table_t const*, dict_vcol_templ_t*, dict_add_v_col_t const*, bool) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:5977
    #2 0x55d299583ca5 in ha_innobase::open(char const*, int, unsigned int) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6312
    #3 0x55d298bdcf47 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/10.4/sql/handler.cc:2808
    #4 0x55d29874b0c4 in open_table_from_share(THD*, TABLE_SHARE*, st_mysql_const_lex_string const*, unsigned int, unsigned int, unsigned int, TABLE*, bool, List<String>*) /data/src/10.4/sql/table.cc:4144
    #5 0x55d29829af59 in open_table(THD*, TABLE_LIST*, Open_table_context*) /data/src/10.4/sql/sql_base.cc:2109
    #6 0x55d29869b228 in mysql_inplace_alter_table /data/src/10.4/sql/sql_table.cc:8003
    #7 0x55d2986ad2b8 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool) /data/src/10.4/sql/sql_table.cc:10451
    #8 0x55d29842ee98 in mysql_execute_command(THD*) /data/src/10.4/sql/sql_parse.cc:4254
    #9 0x55d298449462 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.4/sql/sql_parse.cc:8008
    #10 0x55d29841f7a5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.4/sql/sql_parse.cc:1857
    #11 0x55d29841c314 in do_command(THD*) /data/src/10.4/sql/sql_parse.cc:1378
    #12 0x55d29881b0b9 in do_handle_one_connection(CONNECT*) /data/src/10.4/sql/sql_connect.cc:1420
    #13 0x55d29881a9d0 in handle_one_connection /data/src/10.4/sql/sql_connect.cc:1324
    #14 0x55d299487aed in pfs_spawn_thread /data/src/10.4/storage/perfschema/pfs.cc:1869
    #15 0x7f6f441c8fd3 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x7f6f448b83b7 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    #1 0x55d299581172 in innobase_build_v_templ(TABLE const*, dict_table_t const*, dict_vcol_templ_t*, dict_add_v_col_t const*, bool) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:5917
    #2 0x55d299583ca5 in ha_innobase::open(char const*, int, unsigned int) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6312
    #3 0x55d298bdcf47 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/10.4/sql/handler.cc:2808
    #4 0x55d29874b0c4 in open_table_from_share(THD*, TABLE_SHARE*, st_mysql_const_lex_string const*, unsigned int, unsigned int, unsigned int, TABLE*, bool, List<String>*) /data/src/10.4/sql/table.cc:4144
    #5 0x55d29829af59 in open_table(THD*, TABLE_LIST*, Open_table_context*) /data/src/10.4/sql/sql_base.cc:2109
    #6 0x55d29869b228 in mysql_inplace_alter_table /data/src/10.4/sql/sql_table.cc:8003
    #7 0x55d2986ad2b8 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool) /data/src/10.4/sql/sql_table.cc:10451
    #8 0x55d29842ee98 in mysql_execute_command(THD*) /data/src/10.4/sql/sql_parse.cc:4254
    #9 0x55d298449462 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.4/sql/sql_parse.cc:8008
    #10 0x55d29841f7a5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.4/sql/sql_parse.cc:1857
    #11 0x55d29841c314 in do_command(THD*) /data/src/10.4/sql/sql_parse.cc:1378
    #12 0x55d29881b0b9 in do_handle_one_connection(CONNECT*) /data/src/10.4/sql/sql_connect.cc:1420
    #13 0x55d29881a9d0 in handle_one_connection /data/src/10.4/sql/sql_connect.cc:1324
    #14 0x55d299487aed in pfs_spawn_thread /data/src/10.4/storage/perfschema/pfs.cc:1869
    #15 0x7f6f441c8fd3 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7f6f448b98b0 in operator new[](unsigned long, std::nothrow_t const&) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:104
    #1 0x55d2995812c0 in innobase_build_v_templ(TABLE const*, dict_table_t const*, dict_vcol_templ_t*, dict_add_v_col_t const*, bool) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:5922
    #2 0x55d299583ca5 in ha_innobase::open(char const*, int, unsigned int) /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6312
    #3 0x55d298bdcf47 in handler::ha_open(TABLE*, char const*, int, unsigned int, st_mem_root*, List<String>*) /data/src/10.4/sql/handler.cc:2808
    #4 0x55d29874b0c4 in open_table_from_share(THD*, TABLE_SHARE*, st_mysql_const_lex_string const*, unsigned int, unsigned int, unsigned int, TABLE*, bool, List<String>*) /data/src/10.4/sql/table.cc:4144
    #5 0x55d29829af59 in open_table(THD*, TABLE_LIST*, Open_table_context*) /data/src/10.4/sql/sql_base.cc:2109
    #6 0x55d29869b228 in mysql_inplace_alter_table /data/src/10.4/sql/sql_table.cc:8003
    #7 0x55d2986ad2b8 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Recreate_info*, Alter_info*, unsigned int, st_order*, bool) /data/src/10.4/sql/sql_table.cc:10451
    #8 0x55d29842ee98 in mysql_execute_command(THD*) /data/src/10.4/sql/sql_parse.cc:4254
    #9 0x55d298449462 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /data/src/10.4/sql/sql_parse.cc:8008
    #10 0x55d29841f7a5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /data/src/10.4/sql/sql_parse.cc:1857
    #11 0x55d29841c314 in do_command(THD*) /data/src/10.4/sql/sql_parse.cc:1378
    #12 0x55d29881b0b9 in do_handle_one_connection(CONNECT*) /data/src/10.4/sql/sql_connect.cc:1420
    #13 0x55d29881a9d0 in handle_one_connection /data/src/10.4/sql/sql_connect.cc:1324
    #14 0x55d299487aed in pfs_spawn_thread /data/src/10.4/storage/perfschema/pfs.cc:1869
    #15 0x7f6f441c8fd3 in start_thread nptl/pthread_create.c:442
 
SUMMARY: AddressSanitizer: 608 byte(s) leaked in 6 allocation(s).

The failure started happening after this commit in 10.3.38:

commit d08f2ab6d61b1b431be3c003c4ecc9495faebffc
Author: Sergei Golubchik
Date:   Tue Nov 1 19:50:20 2022 +0100
 
    MDEV-28855 SEGV around dict_free_vc_templ during DROP INDEX

Not reproducible on 10.5+.



 Comments   
Comment by Elena Stepanova [ 2024-01-22 ]

Currently reproducible with perl ./mtr funcs_1.is_tables_innodb gcol.innodb_virtual_debug

Comment by Elena Stepanova [ 2024-01-22 ]

In buildbot (and in other bulk test runs) the failure is often reported for an unrelated test, the first one which restarts the server after the chain of tests; e.g. currently on 10.4 it is gcol.innodb_virtual_fk_restart.

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