[MDEV-30943] LeakSanitizer: detected memory leaks in trx_mod_table_time_t::start_bulk_insert, ASAN: 763552 byte(s) leaked in 5 allocation(s) Created: 2023-03-28  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: Character Sets, Storage Engine - InnoDB
Affects Version/s: 10.7, 10.8, 10.9, 10.10, 10.11, 11.0
Fix Version/s: 10.11, 11.0

Type: Bug Priority: Major
Reporter: Roel Van de Paar Assignee: Thirunarayanan Balathandayuthapani
Resolution: Unresolved Votes: 0
Labels: ASAN, LSAN, Memory_leak, regression-10.7


 Description   

SET unique_checks=0,foreign_key_checks=0,autocommit=0,sql_mode='traditional';
CREATE TABLE t (c CHAR(3)) DEFAULT CHARSET=sjis ENGINE=InnoDB;
INSERT t VALUES ('abc'),('abcd');
SHUTDOWN;

Leads to:

11.0.2 a79abb6517f2fa68b48e61aa3354a0631e3a63f7 (Debug, UBASAN)

==687739==ERROR: LeakSanitizer: detected memory leaks
 
Direct leak of 80 byte(s) in 1 object(s) allocated from:
    #0 0x564be1987c97 in operator new(unsigned long) (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x792bc97)
    #1 0x564be58a6a02 in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /test/11.0_dbg_san/storage/innobase/include/trx0trx.h:481
    #2 0x564be58a6a02 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*) /test/11.0_dbg_san/storage/innobase/trx/trx0rec.cc:1867
    #3 0x564be5620bee in row_ins_clust_index_entry_low(unsigned long, btr_latch_mode, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:2804
    #4 0x564be562496a in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3275
    #5 0x564be562d09c in row_ins_index_entry /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3407
    #6 0x564be562d09c in row_ins_index_entry_step /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3575
    #7 0x564be562d09c in row_ins /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3692
    #8 0x564be562d09c in row_ins_step(que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3821
    #9 0x564be56b3d13 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /test/11.0_dbg_san/storage/innobase/row/row0mysql.cc:1307
    #10 0x564be514abd3 in ha_innobase::write_row(unsigned char const*) /test/11.0_dbg_san/storage/innobase/handler/ha_innodb.cc:7807
    #11 0x564be3a3015b in handler::ha_write_row(unsigned char const*) /test/11.0_dbg_san/sql/handler.cc:7788
    #12 0x564be206c566 in write_record(THD*, TABLE*, st_copy_info*, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:2203
    #13 0x564be20d0e3c in mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:1153
    #14 0x564be22dadc4 in mysql_execute_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:4569
    #15 0x564be23005e6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/11.0_dbg_san/sql/sql_parse.cc:7999
    #16 0x564be231037a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1894
    #17 0x564be231e17f in do_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1407
    #18 0x564be2ce2459 in do_handle_one_connection(CONNECT*, bool) /test/11.0_dbg_san/sql/sql_connect.cc:1416
    #19 0x564be2ce3974 in handle_one_connection /test/11.0_dbg_san/sql/sql_connect.cc:1318
    #20 0x151ab588db42 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 762592 byte(s) in 1 object(s) allocated from:
    #0 0x564be1986337 in __interceptor_malloc (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x792a337)
    #1 0x564be5634d28 in row_merge_buf_create_low /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:336
    #2 0x564be564fe91 in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:5106
    #3 0x564be58a6a1d in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /test/11.0_dbg_san/storage/innobase/include/trx0trx.h:481
    #4 0x564be58a6a1d 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*) /test/11.0_dbg_san/storage/innobase/trx/trx0rec.cc:1867
    #5 0x564be5620bee in row_ins_clust_index_entry_low(unsigned long, btr_latch_mode, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:2804
    #6 0x564be562496a in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3275
    #7 0x564be562d09c in row_ins_index_entry /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3407
    #8 0x564be562d09c in row_ins_index_entry_step /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3575
    #9 0x564be562d09c in row_ins /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3692
    #10 0x564be562d09c in row_ins_step(que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3821
    #11 0x564be56b3d13 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /test/11.0_dbg_san/storage/innobase/row/row0mysql.cc:1307
    #12 0x564be514abd3 in ha_innobase::write_row(unsigned char const*) /test/11.0_dbg_san/storage/innobase/handler/ha_innodb.cc:7807
    #13 0x564be3a3015b in handler::ha_write_row(unsigned char const*) /test/11.0_dbg_san/sql/handler.cc:7788
    #14 0x564be206c566 in write_record(THD*, TABLE*, st_copy_info*, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:2203
    #15 0x564be20d0e3c in mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:1153
    #16 0x564be22dadc4 in mysql_execute_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:4569
    #17 0x564be23005e6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/11.0_dbg_san/sql/sql_parse.cc:7999
    #18 0x564be231037a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1894
    #19 0x564be231e17f in do_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1407
    #20 0x564be2ce2459 in do_handle_one_connection(CONNECT*, bool) /test/11.0_dbg_san/sql/sql_connect.cc:1416
    #21 0x564be2ce3974 in handle_one_connection /test/11.0_dbg_san/sql/sql_connect.cc:1318
    #22 0x151ab588db42 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 592 byte(s) in 1 object(s) allocated from:
    #0 0x564be1986337 in __interceptor_malloc (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x792a337)
    #1 0x564be544800c in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /test/11.0_dbg_san/storage/innobase/mem/mem0mem.cc:277
    #2 0x564be5448b8f in mem_heap_add_block(mem_block_info_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/mem/mem0mem.cc:378
    #3 0x564be5631dae in mem_heap_alloc /test/11.0_dbg_san/storage/innobase/include/mem0mem.inl:193
    #4 0x564be5635cbe in mem_heap_dup(mem_block_info_t*, void const*, unsigned long) /test/11.0_dbg_san/storage/innobase/include/mem0mem.h:240
    #5 0x564be5635cbe in dfield_dup /test/11.0_dbg_san/storage/innobase/include/data0data.inl:170
    #6 0x564be5635cbe in row_merge_bulk_buf_add /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:508
    #7 0x564be566ac20 in row_merge_bulk_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:5230
    #8 0x564be58a68d3 in trx_mod_table_time_t::bulk_insert_buffered(dtuple_t const&, dict_index_t const&, trx_t*) /test/11.0_dbg_san/storage/innobase/include/trx0trx.h:523
    #9 0x564be58a68d3 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*) /test/11.0_dbg_san/storage/innobase/trx/trx0rec.cc:1869
    #10 0x564be5620bee in row_ins_clust_index_entry_low(unsigned long, btr_latch_mode, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:2804
    #11 0x564be562496a in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3275
    #12 0x564be562d09c in row_ins_index_entry /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3407
    #13 0x564be562d09c in row_ins_index_entry_step /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3575
    #14 0x564be562d09c in row_ins /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3692
    #15 0x564be562d09c in row_ins_step(que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3821
    #16 0x564be56b3d13 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /test/11.0_dbg_san/storage/innobase/row/row0mysql.cc:1307
    #17 0x564be514abd3 in ha_innobase::write_row(unsigned char const*) /test/11.0_dbg_san/storage/innobase/handler/ha_innodb.cc:7807
    #18 0x564be3a3015b in handler::ha_write_row(unsigned char const*) /test/11.0_dbg_san/sql/handler.cc:7788
    #19 0x564be206c566 in write_record(THD*, TABLE*, st_copy_info*, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:2203
    #20 0x564be20d0e3c in mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:1153
    #21 0x564be22dadc4 in mysql_execute_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:4569
    #22 0x564be23005e6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/11.0_dbg_san/sql/sql_parse.cc:7999
    #23 0x564be231037a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1894
    #24 0x564be231e17f in do_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1407
    #25 0x564be2ce2459 in do_handle_one_connection(CONNECT*, bool) /test/11.0_dbg_san/sql/sql_connect.cc:1416
    #26 0x564be2ce3974 in handle_one_connection /test/11.0_dbg_san/sql/sql_connect.cc:1318
    #27 0x151ab588db42 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 232 byte(s) in 1 object(s) allocated from:
    #0 0x564be1986337 in __interceptor_malloc (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x792a337)
    #1 0x564be544800c in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /test/11.0_dbg_san/storage/innobase/mem/mem0mem.cc:277
    #2 0x564be564ff6c in mem_heap_create_func /test/11.0_dbg_san/storage/innobase/include/mem0mem.inl:377
    #3 0x564be564ff6c in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:5105
    #4 0x564be58a6a1d in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /test/11.0_dbg_san/storage/innobase/include/trx0trx.h:481
    #5 0x564be58a6a1d 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*) /test/11.0_dbg_san/storage/innobase/trx/trx0rec.cc:1867
    #6 0x564be5620bee in row_ins_clust_index_entry_low(unsigned long, btr_latch_mode, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:2804
    #7 0x564be562496a in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3275
    #8 0x564be562d09c in row_ins_index_entry /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3407
    #9 0x564be562d09c in row_ins_index_entry_step /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3575
    #10 0x564be562d09c in row_ins /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3692
    #11 0x564be562d09c in row_ins_step(que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3821
    #12 0x564be56b3d13 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /test/11.0_dbg_san/storage/innobase/row/row0mysql.cc:1307
    #13 0x564be514abd3 in ha_innobase::write_row(unsigned char const*) /test/11.0_dbg_san/storage/innobase/handler/ha_innodb.cc:7807
    #14 0x564be3a3015b in handler::ha_write_row(unsigned char const*) /test/11.0_dbg_san/sql/handler.cc:7788
    #15 0x564be206c566 in write_record(THD*, TABLE*, st_copy_info*, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:2203
    #16 0x564be20d0e3c in mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:1153
    #17 0x564be22dadc4 in mysql_execute_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:4569
    #18 0x564be23005e6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/11.0_dbg_san/sql/sql_parse.cc:7999
    #19 0x564be231037a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1894
    #20 0x564be231e17f in do_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1407
    #21 0x564be2ce2459 in do_handle_one_connection(CONNECT*, bool) /test/11.0_dbg_san/sql/sql_connect.cc:1416
    #22 0x564be2ce3974 in handle_one_connection /test/11.0_dbg_san/sql/sql_connect.cc:1318
    #23 0x151ab588db42 in start_thread nptl/pthread_create.c:442
 
Indirect leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x564be1986507 in __interceptor_calloc (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x792a507)
    #1 0x564be564fba9 in row_merge_bulk_t::row_merge_bulk_t(dict_table_t*) /test/11.0_dbg_san/storage/innobase/row/row0merge.cc:5096
    #2 0x564be58a6a1d in trx_mod_table_time_t::start_bulk_insert(dict_table_t*) /test/11.0_dbg_san/storage/innobase/include/trx0trx.h:481
    #3 0x564be58a6a1d 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*) /test/11.0_dbg_san/storage/innobase/trx/trx0rec.cc:1867
    #4 0x564be5620bee in row_ins_clust_index_entry_low(unsigned long, btr_latch_mode, dict_index_t*, unsigned long, dtuple_t*, unsigned long, que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:2804
    #5 0x564be562496a in row_ins_clust_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, unsigned long) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3275
    #6 0x564be562d09c in row_ins_index_entry /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3407
    #7 0x564be562d09c in row_ins_index_entry_step /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3575
    #8 0x564be562d09c in row_ins /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3692
    #9 0x564be562d09c in row_ins_step(que_thr_t*) /test/11.0_dbg_san/storage/innobase/row/row0ins.cc:3821
    #10 0x564be56b3d13 in row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t) /test/11.0_dbg_san/storage/innobase/row/row0mysql.cc:1307
    #11 0x564be514abd3 in ha_innobase::write_row(unsigned char const*) /test/11.0_dbg_san/storage/innobase/handler/ha_innodb.cc:7807
    #12 0x564be3a3015b in handler::ha_write_row(unsigned char const*) /test/11.0_dbg_san/sql/handler.cc:7788
    #13 0x564be206c566 in write_record(THD*, TABLE*, st_copy_info*, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:2203
    #14 0x564be20d0e3c in mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool, select_result*) /test/11.0_dbg_san/sql/sql_insert.cc:1153
    #15 0x564be22dadc4 in mysql_execute_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:4569
    #16 0x564be23005e6 in mysql_parse(THD*, char*, unsigned int, Parser_state*) /test/11.0_dbg_san/sql/sql_parse.cc:7999
    #17 0x564be231037a in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1894
    #18 0x564be231e17f in do_command(THD*, bool) /test/11.0_dbg_san/sql/sql_parse.cc:1407
    #19 0x564be2ce2459 in do_handle_one_connection(CONNECT*, bool) /test/11.0_dbg_san/sql/sql_connect.cc:1416
    #20 0x564be2ce3974 in handle_one_connection /test/11.0_dbg_san/sql/sql_connect.cc:1318
    #21 0x151ab588db42 in start_thread nptl/pthread_create.c:442
 
SUMMARY: AddressSanitizer: 763552 byte(s) leaked in 5 allocation(s).
230328 19:41:11 [ERROR] mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
 
To report this bug, see https://mariadb.com/kb/en/reporting-bugs
 
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.
 
Server version: 11.0.2-MariaDB-debug source revision: a79abb6517f2fa68b48e61aa3354a0631e3a63f7
read_buffer_size=131072
max_used_connections=1
thread_count=0
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x0 thread_stack 0x100000
/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd(+0x78bb6fe)[0x564be19176fe]
asan_interceptors.o:0(__interceptor_backtrace.part.0)[0x564be6073e11]
mysys/stacktrace.c:215(my_print_stacktrace)[0x564be39ad568]
libc_sigaction.c:0(__restore_rt)[0x151ab583b520]
nptl/pthread_kill.c:44(__pthread_kill_implementation)[0x151ab588fa7c]
posix/raise.c:27(__GI_raise)[0x151ab583b476]
stdlib/abort.c:81(__GI_abort)[0x151ab58217f3]
:0(__sanitizer::Abort())[0x564be19a41c2]
:0(__sanitizer::Die())[0x564be19afd7c]
:0(__lsan::HandleLeaks())[0x564be19b528c]
:0(__lsan::DoLeakCheck())[0x564be19b49d5]
stdlib/cxa_finalize.c:84(__cxa_finalize)[0x151ab583ea56]
crtstuff.c:0(__do_global_dtors_aux)[0x564be18f66a7]
The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains
information that should help you find out what is causing the crash.
Writing a core file...
Working directory at /test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/data
Resource Limits:
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            unlimited            unlimited            bytes     
Max core file size        unlimited            unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             unlimited            unlimited            processes 
Max open files            1048576              1048576              files     
Max locked memory         unlimited            unlimited            bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       unlimited            unlimited            signals   
Max msgqueue size         unlimited            unlimited            bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        
Core pattern: core
 
/test/11.0_dbg_san/mysys/my_read.c:63:30: runtime error: member access within null pointer of type 'struct st_my_thread_var'
    #0 0x564be606a2cc in my_read /test/11.0_dbg_san/mysys/my_read.c:63
    #1 0x564be39ac9e5 in output_core_info /test/11.0_dbg_san/sql/signal_handler.cc:91
    #2 0x564be39ade2d in handle_fatal_signal /test/11.0_dbg_san/sql/signal_handler.cc:353
    #3 0x151ab583b51f  (/lib/x86_64-linux-gnu/libc.so.6+0x4251f)
    #4 0x151ab588fa7b in __pthread_kill_implementation nptl/pthread_kill.c:43
    #5 0x151ab588fa7b in __pthread_kill_internal nptl/pthread_kill.c:78
    #6 0x151ab588fa7b in __GI___pthread_kill nptl/pthread_kill.c:89
    #7 0x151ab583b475 in __GI_raise ../sysdeps/posix/raise.c:26
    #8 0x151ab58217f2 in __GI_abort stdlib/abort.c:79
    #9 0x564be19a41c1 in __sanitizer::Abort() (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x79481c1)
    #10 0x564be19afd7b in __sanitizer::Die() (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x7953d7b)
    #11 0x564be19b528b in __lsan::HandleLeaks() (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x795928b)
    #12 0x564be19b49d4 in __lsan::DoLeakCheck() (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x79589d4)
    #13 0x151ab583ea55 in __cxa_finalize stdlib/cxa_finalize.c:83
    #14 0x564be18f66a6  (/test/UBASAN_MD250323-mariadb-11.0.2-linux-x86_64-dbg/bin/mariadbd+0x789a6a6)
 
Fatal signal 11 while backtracing

Setup:

Compiled with GCC >=7.5.0 (I use GCC 11.3.0) and:
    -DWITH_ASAN=ON -DWITH_ASAN_SCOPE=ON -DWITH_UBSAN=ON -DWITH_RAPID=OFF -DWSREP_LIB_WITH_ASAN=ON
Set before execution:
    export ASAN_OPTIONS=quarantine_size_mb=512:atexit=0:detect_invalid_pointer_pairs=3:dump_instruction_bytes=1:abort_on_error=1:allocator_may_return_null=1

Bug confirmed present in:
MariaDB: 10.7.8 (dbg), 10.7.8 (opt), 10.8.8 (dbg), 10.8.8 (opt), 10.9.6 (dbg), 10.9.6 (opt), 10.10.4 (dbg), 10.10.4 (opt), 10.11.3 (dbg), 10.11.3 (opt), 11.0.2 (dbg), 11.0.2 (opt)

Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.3.39 (dbg), 10.3.39 (opt), 10.4.29 (dbg), 10.4.29 (opt), 10.5.20 (dbg), 10.5.20 (opt), 10.6.13 (dbg), 10.6.13 (opt)



 Comments   
Comment by Roel Van de Paar [ 2023-03-28 ]

runtime error: member access within null pointer of type 'struct st_my_thread_var'

It is unclear if the UBSAN error near the end of the log is related.

Comment by Marko Mäkelä [ 2023-03-28 ]

Would a similar leak happen if the client is disconnected before the server is shut down? That is, if any SHUTDOWN statement is executed, it would be invoked from a different connection?

Comment by Roel Van de Paar [ 2023-03-28 ]

Good call. Indeed, when the SHUTDOWN is not issued, and even if mysqladmin shutdown is subsequently executed from the terminal, no leak occurs. Similarly, re-entering the client and executing SHUTDOWN in the new session will also not yield the leak.

Comment by Roel Van de Paar [ 2023-03-28 ]

Execution in the CLI via SOURCE in.sql will also yield the leak (provided SHUTDOWN is included in the input file as discussed above).

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