[MDEV-26956] LeakSanitizer/Valgrind errors in trx_mod_table_time_t::start_bulk_insert upon adding system versioning Created: 2021-11-02  Updated: 2022-09-19  Resolved: 2021-11-08

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Storage Engine - InnoDB, Versioned Tables
Affects Version/s: 10.7
Fix Version/s: 10.7.2

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Thirunarayanan Balathandayuthapani
Resolution: Fixed Votes: 0
Labels: regression

Issue Links:
Relates
relates to MDEV-28400 LeakSanitizer error in trx_mod_table_... Closed
relates to MDEV-29570 LeakSanitizer error in trx_mod_table_... Closed

 Description   

--source include/have_innodb.inc
 
CREATE TABLE t (id INT, s DATE, e DATE, PERIOD FOR p(s,e), PRIMARY KEY(id, p WITHOUT OVERLAPS)) ENGINE=InnoDB;
SET UNIQUE_CHECKS= OFF, FOREIGN_KEY_CHECKS = OFF;
ALTER TABLE t ADD COLUMN row_start BIGINT UNSIGNED AS ROW START, ADD COLUMN row_end BIGINT UNSIGNED AS ROW END, ADD PERIOD FOR SYSTEM_TIME(row_start,row_end), WITH SYSTEM VERSIONING;
 
# Cleanup
DROP TABLE t;

10.7 d6e3cd6f

==3787428==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 104 byte(s) in 1 object(s) allocated from:
    #0 0x7f8ab4d28947 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.5+0x10f947)
    #1 0x5619a4d60437 in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /data/src/10.7/storage/innobase/include/trx0trx.h:481
    #2 0x5619a4d5beeb in trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) /data/src/10.7/storage/innobase/trx/trx0rec.cc:2056
    #3 0x5619a4bdc210 in row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:2674
    #4 0x5619a4bdf589 in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /data/src/10.7/storage/innobase/row/row0ins.cc:3246
    #5 0x5619a4be014e in row_ins_index_entry /data/src/10.7/storage/innobase/row/row0ins.cc:3380
    #6 0x5619a4be12e6 in row_ins_index_entry_step /data/src/10.7/storage/innobase/row/row0ins.cc:3548
    #7 0x5619a4be1dc1 in row_ins /data/src/10.7/storage/innobase/row/row0ins.cc:3694
    #8 0x5619a4be2fd6 in row_ins_step(que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:3840
    #9 0x5619a4c2d576 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /data/src/10.7/storage/innobase/row/row0mysql.cc:1318
    #10 0x5619a4864462 in ha_innobase::write_row(unsigned char const*) /data/src/10.7/storage/innobase/handler/ha_innodb.cc:7826
    #11 0x5619a3eaf634 in handler::ha_write_row(unsigned char const*) /data/src/10.7/sql/handler.cc:7516
    #12 0x5619a39b2061 in TR_table::update(unsigned long long, unsigned long long) /data/src/10.7/sql/table.cc:9711
    #13 0x5619a3e7bda3 in ha_commit_trans(THD*, bool) /data/src/10.7/sql/handler.cc:1764
    #14 0x5619a3e9d7b7 in ha_enable_transaction(THD*, bool) /data/src/10.7/sql/handler.cc:5536
    #15 0x5619a38cb487 in mysql_trans_commit_alter_copy_data(THD*) /data/src/10.7/sql/sql_table.cc:10906
    #16 0x5619a38ceaf5 in copy_data_between_tables /data/src/10.7/sql/sql_table.cc:11273
    #17 0x5619a38c7d49 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/10.7/sql/sql_table.cc:10453
    #18 0x5619a3a84bdc in Sql_cmd_alter_table::execute(THD*) /data/src/10.7/sql/sql_alter.cc:553
    #19 0x5619a35e61a1 in mysql_execute_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:5989
    #20 0x5619a35f39c6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/10.7/sql/sql_parse.cc:8028
    #21 0x5619a35c9ad5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/10.7/sql/sql_parse.cc:1894
    #22 0x5619a35c67f9 in do_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:1402
    #23 0x5619a3a66dd8 in do_handle_one_connection(CONNECT*, bool) /data/src/10.7/sql/sql_connect.cc:1418
    #24 0x5619a3a66664 in handle_one_connection /data/src/10.7/sql/sql_connect.cc:1312
    #25 0x5619a4659b84 in pfs_spawn_thread /data/src/10.7/storage/perfschema/pfs.cc:2201
    #26 0x7f8ab46a7608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477
 
Indirect leak of 3666928 byte(s) in 4 object(s) allocated from:
    #0 0x7f8ab4d26bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x5619a48c16b2 in ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) /data/src/10.7/storage/innobase/include/ut0new.h:375
    #2 0x5619a4bf410d in row_merge_buf_create_low /data/src/10.7/storage/innobase/row/row0merge.cc:344
    #3 0x5619a4c17462 in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /data/src/10.7/storage/innobase/row/row0merge.cc:5006
    #4 0x5619a4d60449 in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /data/src/10.7/storage/innobase/include/trx0trx.h:481
    #5 0x5619a4d5beeb in trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) /data/src/10.7/storage/innobase/trx/trx0rec.cc:2056
    #6 0x5619a4bdc210 in row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:2674
    #7 0x5619a4bdf589 in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /data/src/10.7/storage/innobase/row/row0ins.cc:3246
    #8 0x5619a4be014e in row_ins_index_entry /data/src/10.7/storage/innobase/row/row0ins.cc:3380
    #9 0x5619a4be12e6 in row_ins_index_entry_step /data/src/10.7/storage/innobase/row/row0ins.cc:3548
    #10 0x5619a4be1dc1 in row_ins /data/src/10.7/storage/innobase/row/row0ins.cc:3694
    #11 0x5619a4be2fd6 in row_ins_step(que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:3840
    #12 0x5619a4c2d576 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /data/src/10.7/storage/innobase/row/row0mysql.cc:1318
    #13 0x5619a4864462 in ha_innobase::write_row(unsigned char const*) /data/src/10.7/storage/innobase/handler/ha_innodb.cc:7826
    #14 0x5619a3eaf634 in handler::ha_write_row(unsigned char const*) /data/src/10.7/sql/handler.cc:7516
    #15 0x5619a39b2061 in TR_table::update(unsigned long long, unsigned long long) /data/src/10.7/sql/table.cc:9711
    #16 0x5619a3e7bda3 in ha_commit_trans(THD*, bool) /data/src/10.7/sql/handler.cc:1764
    #17 0x5619a3e9d7b7 in ha_enable_transaction(THD*, bool) /data/src/10.7/sql/handler.cc:5536
    #18 0x5619a38cb487 in mysql_trans_commit_alter_copy_data(THD*) /data/src/10.7/sql/sql_table.cc:10906
    #19 0x5619a38ceaf5 in copy_data_between_tables /data/src/10.7/sql/sql_table.cc:11273
    #20 0x5619a38c7d49 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/10.7/sql/sql_table.cc:10453
    #21 0x5619a3a84bdc in Sql_cmd_alter_table::execute(THD*) /data/src/10.7/sql/sql_alter.cc:553
    #22 0x5619a35e61a1 in mysql_execute_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:5989
    #23 0x5619a35f39c6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/10.7/sql/sql_parse.cc:8028
    #24 0x5619a35c9ad5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/10.7/sql/sql_parse.cc:1894
    #25 0x5619a35c67f9 in do_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:1402
    #26 0x5619a3a66dd8 in do_handle_one_connection(CONNECT*, bool) /data/src/10.7/sql/sql_connect.cc:1418
    #27 0x5619a3a66664 in handle_one_connection /data/src/10.7/sql/sql_connect.cc:1312
    #28 0x5619a4659b84 in pfs_spawn_thread /data/src/10.7/storage/perfschema/pfs.cc:2201
    #29 0x7f8ab46a7608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477
 
Indirect leak of 1024 byte(s) in 4 object(s) allocated from:
    #0 0x7f8ab4d26bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x5619a48c16b2 in ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) /data/src/10.7/storage/innobase/include/ut0new.h:375
    #2 0x5619a4aaac1b in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /data/src/10.7/storage/innobase/mem/mem0mem.cc:277
    #3 0x5619a4beb044 in mem_heap_create_func /data/src/10.7/storage/innobase/include/mem0mem.ic:377
    #4 0x5619a4c173fc in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /data/src/10.7/storage/innobase/row/row0merge.cc:5005
    #5 0x5619a4d60449 in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /data/src/10.7/storage/innobase/include/trx0trx.h:481
    #6 0x5619a4d5beeb in trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) /data/src/10.7/storage/innobase/trx/trx0rec.cc:2056
    #7 0x5619a4bdc210 in row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:2674
    #8 0x5619a4bdf589 in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /data/src/10.7/storage/innobase/row/row0ins.cc:3246
    #9 0x5619a4be014e in row_ins_index_entry /data/src/10.7/storage/innobase/row/row0ins.cc:3380
    #10 0x5619a4be12e6 in row_ins_index_entry_step /data/src/10.7/storage/innobase/row/row0ins.cc:3548
    #11 0x5619a4be1dc1 in row_ins /data/src/10.7/storage/innobase/row/row0ins.cc:3694
    #12 0x5619a4be2fd6 in row_ins_step(que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:3840
    #13 0x5619a4c2d576 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /data/src/10.7/storage/innobase/row/row0mysql.cc:1318
    #14 0x5619a4864462 in ha_innobase::write_row(unsigned char const*) /data/src/10.7/storage/innobase/handler/ha_innodb.cc:7826
    #15 0x5619a3eaf634 in handler::ha_write_row(unsigned char const*) /data/src/10.7/sql/handler.cc:7516
    #16 0x5619a39b2061 in TR_table::update(unsigned long long, unsigned long long) /data/src/10.7/sql/table.cc:9711
    #17 0x5619a3e7bda3 in ha_commit_trans(THD*, bool) /data/src/10.7/sql/handler.cc:1764
    #18 0x5619a3e9d7b7 in ha_enable_transaction(THD*, bool) /data/src/10.7/sql/handler.cc:5536
    #19 0x5619a38cb487 in mysql_trans_commit_alter_copy_data(THD*) /data/src/10.7/sql/sql_table.cc:10906
    #20 0x5619a38ceaf5 in copy_data_between_tables /data/src/10.7/sql/sql_table.cc:11273
    #21 0x5619a38c7d49 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/10.7/sql/sql_table.cc:10453
    #22 0x5619a3a84bdc in Sql_cmd_alter_table::execute(THD*) /data/src/10.7/sql/sql_alter.cc:553
    #23 0x5619a35e61a1 in mysql_execute_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:5989
    #24 0x5619a35f39c6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/10.7/sql/sql_parse.cc:8028
    #25 0x5619a35c9ad5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/10.7/sql/sql_parse.cc:1894
    #26 0x5619a35c67f9 in do_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:1402
    #27 0x5619a3a66dd8 in do_handle_one_connection(CONNECT*, bool) /data/src/10.7/sql/sql_connect.cc:1418
    #28 0x5619a3a66664 in handle_one_connection /data/src/10.7/sql/sql_connect.cc:1312
    #29 0x5619a4659b84 in pfs_spawn_thread /data/src/10.7/storage/perfschema/pfs.cc:2201
 
Indirect leak of 616 byte(s) in 1 object(s) allocated from:
    #0 0x7f8ab4d26bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x5619a48c16b2 in ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) /data/src/10.7/storage/innobase/include/ut0new.h:375
    #2 0x5619a4aaac1b in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /data/src/10.7/storage/innobase/mem/mem0mem.cc:277
    #3 0x5619a4aab56b in mem_heap_add_block(mem_block_info_t*, unsigned long) /data/src/10.7/storage/innobase/mem/mem0mem.cc:378
    #4 0x5619a4beac6d in mem_heap_alloc /data/src/10.7/storage/innobase/include/mem0mem.ic:193
    #5 0x5619a4bf4f24 in row_merge_bulk_buf_add /data/src/10.7/storage/innobase/row/row0merge.cc:478
    #6 0x5619a4c18659 in row_merge_bulk_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) /data/src/10.7/storage/innobase/row/row0merge.cc:5126
    #7 0x5619a4be4820 in trx_mod_table_time_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) /data/src/10.7/storage/innobase/include/trx0trx.h:510
    #8 0x5619a4d5bf1b in trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) /data/src/10.7/storage/innobase/trx/trx0rec.cc:2058
    #9 0x5619a4bdc210 in row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:2674
    #10 0x5619a4bdf589 in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /data/src/10.7/storage/innobase/row/row0ins.cc:3246
    #11 0x5619a4be014e in row_ins_index_entry /data/src/10.7/storage/innobase/row/row0ins.cc:3380
    #12 0x5619a4be12e6 in row_ins_index_entry_step /data/src/10.7/storage/innobase/row/row0ins.cc:3548
    #13 0x5619a4be1dc1 in row_ins /data/src/10.7/storage/innobase/row/row0ins.cc:3694
    #14 0x5619a4be2fd6 in row_ins_step(que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:3840
    #15 0x5619a4c2d576 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /data/src/10.7/storage/innobase/row/row0mysql.cc:1318
    #16 0x5619a4864462 in ha_innobase::write_row(unsigned char const*) /data/src/10.7/storage/innobase/handler/ha_innodb.cc:7826
    #17 0x5619a3eaf634 in handler::ha_write_row(unsigned char const*) /data/src/10.7/sql/handler.cc:7516
    #18 0x5619a39b2061 in TR_table::update(unsigned long long, unsigned long long) /data/src/10.7/sql/table.cc:9711
    #19 0x5619a3e7bda3 in ha_commit_trans(THD*, bool) /data/src/10.7/sql/handler.cc:1764
    #20 0x5619a3e9d7b7 in ha_enable_transaction(THD*, bool) /data/src/10.7/sql/handler.cc:5536
    #21 0x5619a38cb487 in mysql_trans_commit_alter_copy_data(THD*) /data/src/10.7/sql/sql_table.cc:10906
    #22 0x5619a38ceaf5 in copy_data_between_tables /data/src/10.7/sql/sql_table.cc:11273
    #23 0x5619a38c7d49 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/10.7/sql/sql_table.cc:10453
    #24 0x5619a3a84bdc in Sql_cmd_alter_table::execute(THD*) /data/src/10.7/sql/sql_alter.cc:553
    #25 0x5619a35e61a1 in mysql_execute_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:5989
    #26 0x5619a35f39c6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/10.7/sql/sql_parse.cc:8028
    #27 0x5619a35c9ad5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/10.7/sql/sql_parse.cc:1894
    #28 0x5619a35c67f9 in do_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:1402
    #29 0x5619a3a66dd8 in do_handle_one_connection(CONNECT*, bool) /data/src/10.7/sql/sql_connect.cc:1418
 
Indirect leak of 248 byte(s) in 1 object(s) allocated from:
    #0 0x7f8ab4d26dc6 in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
    #1 0x5619a48c1676 in ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) /data/src/10.7/storage/innobase/include/ut0new.h:373
    #2 0x5619a4c172ae in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /data/src/10.7/storage/innobase/row/row0merge.cc:4996
    #3 0x5619a4d60449 in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /data/src/10.7/storage/innobase/include/trx0trx.h:481
    #4 0x5619a4d5beeb in trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) /data/src/10.7/storage/innobase/trx/trx0rec.cc:2056
    #5 0x5619a4bdc210 in row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:2674
    #6 0x5619a4bdf589 in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /data/src/10.7/storage/innobase/row/row0ins.cc:3246
    #7 0x5619a4be014e in row_ins_index_entry /data/src/10.7/storage/innobase/row/row0ins.cc:3380
    #8 0x5619a4be12e6 in row_ins_index_entry_step /data/src/10.7/storage/innobase/row/row0ins.cc:3548
    #9 0x5619a4be1dc1 in row_ins /data/src/10.7/storage/innobase/row/row0ins.cc:3694
    #10 0x5619a4be2fd6 in row_ins_step(que_thr_t*) /data/src/10.7/storage/innobase/row/row0ins.cc:3840
    #11 0x5619a4c2d576 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /data/src/10.7/storage/innobase/row/row0mysql.cc:1318
    #12 0x5619a4864462 in ha_innobase::write_row(unsigned char const*) /data/src/10.7/storage/innobase/handler/ha_innodb.cc:7826
    #13 0x5619a3eaf634 in handler::ha_write_row(unsigned char const*) /data/src/10.7/sql/handler.cc:7516
    #14 0x5619a39b2061 in TR_table::update(unsigned long long, unsigned long long) /data/src/10.7/sql/table.cc:9711
    #15 0x5619a3e7bda3 in ha_commit_trans(THD*, bool) /data/src/10.7/sql/handler.cc:1764
    #16 0x5619a3e9d7b7 in ha_enable_transaction(THD*, bool) /data/src/10.7/sql/handler.cc:5536
    #17 0x5619a38cb487 in mysql_trans_commit_alter_copy_data(THD*) /data/src/10.7/sql/sql_table.cc:10906
    #18 0x5619a38ceaf5 in copy_data_between_tables /data/src/10.7/sql/sql_table.cc:11273
    #19 0x5619a38c7d49 in mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool) /data/src/10.7/sql/sql_table.cc:10453
    #20 0x5619a3a84bdc in Sql_cmd_alter_table::execute(THD*) /data/src/10.7/sql/sql_alter.cc:553
    #21 0x5619a35e61a1 in mysql_execute_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:5989
    #22 0x5619a35f39c6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /data/src/10.7/sql/sql_parse.cc:8028
    #23 0x5619a35c9ad5 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /data/src/10.7/sql/sql_parse.cc:1894
    #24 0x5619a35c67f9 in do_command(THD*, bool) /data/src/10.7/sql/sql_parse.cc:1402
    #25 0x5619a3a66dd8 in do_handle_one_connection(CONNECT*, bool) /data/src/10.7/sql/sql_connect.cc:1418
    #26 0x5619a3a66664 in handle_one_connection /data/src/10.7/sql/sql_connect.cc:1312
    #27 0x5619a4659b84 in pfs_spawn_thread /data/src/10.7/storage/perfschema/pfs.cc:2201
    #28 0x7f8ab46a7608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477

==3799835== 248 bytes in 1 blocks are indirectly lost in loss record 1 of 7
==3799835==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7B9E: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:373)
==3799835==    by 0x1466447: row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) (row0merge.cc:4996)
==3799835==    by 0x150E2C8: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835==    by 0xC340AD: TR_table::update(unsigned long long, unsigned long long) (table.cc:9711)
==3799835==    by 0xE72DF5: ha_commit_trans(THD*, bool) (handler.cc:1764)
==3799835== 256 bytes in 1 blocks are possibly lost in loss record 2 of 7
==3799835==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7BB6: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:375)
==3799835==    by 0x13A3D9C: mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) (mem0mem.cc:277)
==3799835==    by 0x144EF8E: mem_heap_create_func(unsigned long, char const*, unsigned int, unsigned long) (mem0mem.ic:377)
==3799835==    by 0x14664A4: row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) (row0merge.cc:5005)
==3799835==    by 0x150E2C8: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835== 616 bytes in 1 blocks are indirectly lost in loss record 3 of 7
==3799835==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7BB6: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:375)
==3799835==    by 0x13A3D9C: mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) (mem0mem.cc:277)
==3799835==    by 0x13A4295: mem_heap_add_block(mem_block_info_t*, unsigned long) (mem0mem.cc:378)
==3799835==    by 0x144EBD0: mem_heap_alloc(mem_block_info_t*, unsigned long) (mem0mem.ic:193)
==3799835==    by 0x1454767: row_merge_bulk_buf_add(row_merge_buf_t*, dict_table_t const&, dtuple_t const&) (row0merge.cc:478)
==3799835==    by 0x1466B28: row_merge_bulk_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) (row0merge.cc:5126)
==3799835==    by 0x144C0A9: trx_mod_table_time_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) (trx0trx.h:510)
==3799835==    by 0x150BD66: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2058)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835== 768 bytes in 3 blocks are indirectly lost in loss record 4 of 7
==3799835==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7BB6: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:375)
==3799835==    by 0x13A3D9C: mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) (mem0mem.cc:277)
==3799835==    by 0x144EF8E: mem_heap_create_func(unsigned long, char const*, unsigned int, unsigned long) (mem0mem.ic:377)
==3799835==    by 0x14664A4: row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) (row0merge.cc:5005)
==3799835==    by 0x150E2C8: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835== 1,118,504 bytes in 1 blocks are possibly lost in loss record 5 of 7
==3799835==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7BB6: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:375)
==3799835==    by 0x14541A7: row_merge_buf_create_low(row_merge_buf_t*, mem_block_info_t*, dict_index_t*) (row0merge.cc:344)
==3799835==    by 0x14664D7: row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) (row0merge.cc:5006)
==3799835==    by 0x150E2C8: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835==    by 0xC340AD: TR_table::update(unsigned long long, unsigned long long) (table.cc:9711)
==3799835== 2,548,424 bytes in 3 blocks are indirectly lost in loss record 6 of 7
==3799835==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x12C7BB6: ut_allocator<unsigned char, true>::allocate(unsigned long, unsigned char const*, unsigned int, bool, bool) (ut0new.h:375)
==3799835==    by 0x14541A7: row_merge_buf_create_low(row_merge_buf_t*, mem_block_info_t*, dict_index_t*) (row0merge.cc:344)
==3799835==    by 0x14664D7: row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) (row0merge.cc:5006)
==3799835==    by 0x150E2C8: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835==    by 0xC340AD: TR_table::update(unsigned long long, unsigned long long) (table.cc:9711)
==3799835== 2,550,160 (104 direct, 2,550,056 indirect) bytes in 1 blocks are definitely lost in loss record 7 of 7
==3799835==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==3799835==    by 0x150E2B6: trx_mod_table_time_t::start_bulk_insert(dict_table_t*) (trx0trx.h:481)
==3799835==    by 0x150BD36: trx_undo_report_row_operation(que_thr_t*, dict_index_t*, dtuple_t const*, upd_t const*, unsigned long, unsigned char const*, unsigned short const*, unsigned long*) (trx0rec.cc:2056)
==3799835==    by 0x14477FA: row_ins_clust_index_entry_low(unsigned long, unsigned long, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) (row0ins.cc:2674)
==3799835==    by 0x1449705: row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) (row0ins.cc:3246)
==3799835==    by 0x1449D0B: row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*) (row0ins.cc:3380)
==3799835==    by 0x144A5E4: row_ins_index_entry_step(ins_node_t*, que_thr_t*) (row0ins.cc:3548)
==3799835==    by 0x144AB06: row_ins(ins_node_t*, que_thr_t*) (row0ins.cc:3694)
==3799835==    by 0x144B40F: row_ins_step(que_thr_t*) (row0ins.cc:3840)
==3799835==    by 0x147045E: row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) (row0mysql.cc:1318)
==3799835==    by 0x129F1C0: ha_innobase::write_row(unsigned char const*) (ha_innodb.cc:7826)
==3799835==    by 0xE865DA: handler::ha_write_row(unsigned char const*) (handler.cc:7516)
==3799835==    by 0xC340AD: TR_table::update(unsigned long long, unsigned long long) (table.cc:9711)
==3799835==    by 0xE72DF5: ha_commit_trans(THD*, bool) (handler.cc:1764)
==3799835==    by 0xE7FD55: ha_enable_transaction(THD*, bool) (handler.cc:5536)
==3799835==    by 0xBD88E4: mysql_trans_commit_alter_copy_data(THD*) (sql_table.cc:10906)

Couldn't reproduce right away with non-transactional (timestamp-based) system versioning, with other kinds of ALTERs, or without application versioning involved.

The failure started happening in 10.7 after this commit

commit 045757af4c301757ba449269351cc27b1691a7d6 c8e309a6ac7b001db41bc0d00458ddb175557e08
Author: Thirunarayanan Balathandayuthapani
Date:   Fri Oct 22 17:32:18 2021 +0300
 
    MDEV-24621 In bulk insert, pre-sort and build indexes one page at a time


Generated at Thu Feb 08 09:49:14 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.