Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-20640

[ERROR] InnoDB: tried to purge non-delete-marked record and Assertion `0' failed in row_purge_remove_sec_if_poss_leaf

Details

    Description

      Note: On some reason, it's not reproducible for me on ASAN builds of the same revision, only on non-ASAN debug.

      --source include/have_innodb.inc
       
      CREATE TABLE t1 ( 
          pk INT AUTO_INCREMENT,
          a BIT(10),
          b BIT(10) AS (a) VIRTUAL,
          PRIMARY KEY(pk),
          UNIQUE(b)
      ) ENGINE=InnoDB;
       
      INSERT INTO t1 (a) VALUES (b'110'),(b'1'),(b'011');
       
      SELECT pk, a INTO OUTFILE 'load.data' FROM t1;
      LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1 (pk, a);
      ALTER TABLE t1 ADD COLUMN c INT;
       
      # Cleanup
      DROP TABLE t1;
      --let $datadir= `SELECT @@datadir`
      --remove_file $datadir/test/load.data
      

      10.3 debug 90a9c4ca

      2019-09-20 21:04:21 3 [ERROR] InnoDB: tried to purge non-delete-marked record in index `b` of table `test`.`t1`: tuple: TUPLE (info_bits=0, 2 fields): {[2]  (0x0006),[4]    (0x80000001)}, record: COMPACT RECORD(info_bi
      ts=0, 2 fields): {[2]  (0x0006),[4]    (0x80000001)}
      mysqld: /data/src/10.3/storage/innobase/row/row0purge.cc:596: bool row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, const dtuple_t*): Assertion `0' failed.
      190920 21:04:21 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f8bc61ccf12 in __GI___assert_fail (assertion=0x555c1df9c761 "0", file=0x555c1df9cf08 "/data/src/10.3/storage/innobase/row/row0purge.cc", line=596, function=0x555c1df9e4c0 <row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*)::__PRETTY_FUNCTION__> "bool row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, const dtuple_t*)") at assert.c:101
      #8  0x0000555c1d8087e6 in row_purge_remove_sec_if_poss_leaf (node=0x555c201a8138, index=0x7f8b6c070a78, entry=0x7f8b90008d88) at /data/src/10.3/storage/innobase/row/row0purge.cc:596
      #9  0x0000555c1d808b6c in row_purge_remove_sec_if_poss (node=0x555c201a8138, index=0x7f8b6c070a78, entry=0x7f8b90008d88) at /data/src/10.3/storage/innobase/row/row0purge.cc:692
      #10 0x0000555c1d808d94 in row_purge_del_mark (node=0x555c201a8138) at /data/src/10.3/storage/innobase/row/row0purge.cc:766
      #11 0x0000555c1d80a96f in row_purge_record_func (node=0x555c201a8138, undo_rec=0x555c201a86e8 "", thr=0x555c201a7f68, updated_extern=false) at /data/src/10.3/storage/innobase/row/row0purge.cc:1191
      #12 0x0000555c1d80ac86 in row_purge (node=0x555c201a8138, undo_rec=0x555c201a86e8 "", thr=0x555c201a7f68) at /data/src/10.3/storage/innobase/row/row0purge.cc:1258
      #13 0x0000555c1d80aede in row_purge_step (thr=0x555c201a7f68) at /data/src/10.3/storage/innobase/row/row0purge.cc:1317
      #14 0x0000555c1d777d50 in que_thr_step (thr=0x555c201a7f68) at /data/src/10.3/storage/innobase/que/que0que.cc:1037
      #15 0x0000555c1d777fe9 in que_run_threads_low (thr=0x555c201a7f68) at /data/src/10.3/storage/innobase/que/que0que.cc:1099
      #16 0x0000555c1d778239 in que_run_threads (thr=0x555c201a7f68) at /data/src/10.3/storage/innobase/que/que0que.cc:1139
      #17 0x0000555c1d8613e3 in srv_task_execute () at /data/src/10.3/storage/innobase/srv/srv0srv.cc:2473
      #18 0x0000555c1d8615fb in srv_worker_thread (arg=0x0) at /data/src/10.3/storage/innobase/srv/srv0srv.cc:2521
      #19 0x00007f8bc7d414a4 in start_thread (arg=0x7f8ba37fe700) at pthread_create.c:456
      #20 0x00007f8bc6289d0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
      

      Couldn't reproduce on 10.2 or 10.4.
      As mentioned above, couldn't reproduce on ASAN build (although it might be just the matter of luck) or non-debug build.

      Attachments

        Issue Links

          Activity

            It looks like after MDEV-29666 was merged to 10.4, the test gcol.innodb_virtual_basic started to fail much more often. I see that this test was marked "big" only to mask failures. As part of the fix, the test must be enabled on all builders.

            marko Marko Mäkelä added a comment - It looks like after MDEV-29666 was merged to 10.4 , the test gcol.innodb_virtual_basic started to fail much more often. I see that this test was marked "big" only to mask failures . As part of the fix, the test must be enabled on all builders.

            marko why do you mention MDEV-29068 and MDEV-29181 here? The test case in the description has no foreign keys. I'd rather move the focus to MDEV-26951 here

            nikitamalyavin Nikita Malyavin added a comment - marko why do you mention MDEV-29068 and MDEV-29181 here? The test case in the description has no foreign keys. I'd rather move the focus to MDEV-26951 here

            I was lucky to reproduce it with ASAN, from the first time.

            ==58520==ERROR: AddressSanitizer: heap-use-after-free on address 0x618000037928 at pc 0x55fcb7e1ac3f bp 0x7f96eddc4c10 sp 0x7f96eddc4c08
            READ of size 8 at 0x618000037928 thread T16
                #0 0x55fcb7e1ac3e in purge_node_t::validate_pcur() /home/nik/mariadb/storage/innobase/row/row0purge.cc:1500:13
                #1 0x55fcb7e191aa in row_purge_reposition_pcur(unsigned long, purge_node_t*, mtr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:74:3
                #2 0x55fcb7e18390 in row_purge_poss_sec(purge_node_t*, dict_index_t*, dtuple_t const*, btr_pcur_t*, mtr_t*, bool) /home/nik/mariadb/storage/innobase/row/row0purge.cc:319:16
                #3 0x55fcb7e2859f in row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:582:7
                #4 0x55fcb7e27963 in row_purge_remove_sec_if_poss(purge_node_t*, dict_index_t*, dtuple_t const*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:695:6
                #5 0x55fcb7e24aae in row_purge_del_mark(purge_node_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:769:4
                #6 0x55fcb7e1e42d in row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1320:12
                #7 0x55fcb7e1a3b5 in row_purge(purge_node_t*, unsigned char*, que_thr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1386:18
                #8 0x55fcb7e19bc2 in row_purge_step(que_thr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1464:3
                #9 0x55fcb7cb20c9 in que_thr_step(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:966:9
                #10 0x55fcb7cb002a in que_run_threads_low(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1028:14
                #11 0x55fcb7cafa6f in que_run_threads(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1068:2
                #12 0x55fcb7fb8a1d in trx_purge(unsigned long, bool, srv_slot_t*) /home/nik/mariadb/storage/innobase/trx/trx0purge.cc:1582:2
                #13 0x55fcb7f256af in srv_do_purge(unsigned long*, srv_slot_t*) /home/nik/mariadb/storage/innobase/srv/srv0srv.cc:2607:20
                #14 0x55fcb7f24535 in srv_purge_coordinator_thread /home/nik/mariadb/storage/innobase/srv/srv0srv.cc:2747:22
                #15 0x7f96fc9d444a  (/usr/lib/libc.so.6+0x8744a) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)
                #16 0x7f96fca57e3f  (/usr/lib/libc.so.6+0x10ae3f) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)
             
            0x618000037928 is located 168 bytes inside of 800-byte region [0x618000037880,0x618000037ba0)
            freed by thread T23 here:
                #0 0x55fcb5ffee92 in __interceptor_free.part.0 (/home/nik/mariadb/bld/sql/mysqld+0x1b1ae92) (BuildId: 846e397c702849e8)
                #1 0x55fcb7bcd1cb in mem_heap_block_free(mem_block_info_t*, mem_block_info_t*) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:416:3
                #2 0x55fcb768048b in mem_heap_free(mem_block_info_t*) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:417:3
                #3 0x55fcb7687d3f in dict_mem_index_free(dict_index_t*) /home/nik/mariadb/storage/innobase/dict/dict0mem.cc:1108:2
                #4 0x55fcb763f01c in dict_index_remove_from_cache_low(dict_table_t*, dict_index_t*, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2171:2
                #5 0x55fcb7636c7d in dict_table_remove_from_cache_low(dict_table_t*, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:1829:3
                #6 0x55fcb763f698 in dict_table_remove_from_cache(dict_table_t*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:1907:2
                #7 0x55fcb7a52d24 in innobase_reload_table(THD*, dict_table_t*, st_mysql_const_lex_string const&) /home/nik/mariadb/storage/innobase/handler/handler0alter.cc:8918:3
                #8 0x55fcb7a4bd44 in ha_innobase::commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool) /home/nik/mariadb/storage/innobase/handler/handler0alter.cc:10034:23
                #9 0x55fcb63bccb6 in handler::ha_commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool) /home/nik/mariadb/sql/handler.cc:4618:11
                #10 0x55fcb6e740b3 in mysql_inplace_alter_table(THD*, TABLE_LIST*, TABLE*, TABLE*, Alter_inplace_info*, MDL_request*, Alter_table_ctx*) /home/nik/mariadb/sql/sql_table.cc:7825:22
                #11 0x55fcb6e61cee 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) /home/nik/mariadb/sql/sql_table.cc:10163:16
                #12 0x55fcb7095b0c in Sql_cmd_alter_table::execute(THD*) /home/nik/mariadb/sql/sql_alter.cc:512:11
                #13 0x55fcb6b10be7 in mysql_execute_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:6076:26
                #14 0x55fcb6af0fba in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:7855:18
                #15 0x55fcb6ae56b9 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:1852:7
                #16 0x55fcb6aed4f2 in do_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:1398:17
                #17 0x55fcb708075a in do_handle_one_connection(CONNECT*) /home/nik/mariadb/sql/sql_connect.cc:1404:11
                #18 0x55fcb707fe8e in handle_one_connection /home/nik/mariadb/sql/sql_connect.cc:1309:3
                #19 0x55fcb8266f4e in pfs_spawn_thread /home/nik/mariadb/storage/perfschema/pfs.cc:1869:3
                #20 0x7f96fc9d444a  (/usr/lib/libc.so.6+0x8744a) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)
             
            previously allocated by thread T23 here:
                #0 0x55fcb5fffea9 in malloc (/home/nik/mariadb/bld/sql/mysqld+0x1b1bea9) (BuildId: 846e397c702849e8)
                #1 0x55fcb7bcbc62 in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:277:37
                #2 0x55fcb7bccde5 in mem_heap_add_block(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:378:14
                #3 0x55fcb767f2c9 in mem_heap_alloc(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:191:11
                #4 0x55fcb767eeeb in mem_heap_zalloc(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:160:16
                #5 0x55fcb7685333 in dict_mem_index_create(dict_table_t*, char const*, unsigned long, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0mem.cc:770:3
                #6 0x55fcb7645706 in dict_index_build_internal_non_clust(dict_index_t*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2641:14
                #7 0x55fcb7640a15 in dict_index_add_to_cache(dict_index_t*&, unsigned long, dict_add_v_col_t const*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2016:6
                #8 0x55fcb79b5378 in dict_create_index_step(que_thr_t*) /home/nik/mariadb/storage/innobase/dict/dict0crea.cc:1361:9
                #9 0x55fcb7cb215a in que_thr_step(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:976:9
                #10 0x55fcb7cb002a in que_run_threads_low(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1028:14
                #11 0x55fcb7cafa6f in que_run_threads(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1068:2
                #12 0x55fcb7dbac12 in row_create_index_for_mysql(dict_index_t*, trx_t*, unsigned long const*) /home/nik/mariadb/storage/innobase/row/row0mysql.cc:2559:3
                #13 0x55fcb754d9cb in create_index(trx_t*, TABLE const*, dict_table_t*, unsigned int) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:11435:3
                #14 0x55fcb74fb85c in create_table_info_t::create_table(bool) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:12581:19
                #15 0x55fcb7550aca in ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:13044:20
                #16 0x55fcb74feaa4 in ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:13095:9
                #17 0x55fcb63bdb16 in handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) /home/nik/mariadb/sql/handler.cc:4756:14
                #18 0x55fcb63c3f8b in ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) /home/nik/mariadb/sql/handler.cc:5223:22
                #19 0x55fcb6fa82a0 in rea_create_table(THD*, st_mysql_const_unsigned_lex_string*, char const*, char const*, char const*, HA_CREATE_INFO*, handler*, bool) /home/nik/mariadb/sql/unireg.cc:515:9
                #20 0x55fcb6e4566a in create_table_impl(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, char const*, DDL_options_st, HA_CREATE_INFO*, Alter_info*, int, bool*, st_key**, unsigned int*, st_mysql_const_unsigned_lex_string*) /home/nik/mariadb/sql/sql_table.cc:5120:9
                #21 0x55fcb6e43364 in mysql_create_table_no_lock(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, Table_specification_st*, Alter_info*, bool*, int, TABLE_LIST*) /home/nik/mariadb/sql/sql_table.cc:5239:8
                #22 0x55fcb6e46d13 in mysql_create_table(THD*, TABLE_LIST*, Table_specification_st*, Alter_info*) /home/nik/mariadb/sql/sql_table.cc:5334:7
                #23 0x55fcb6e81eec in Sql_cmd_create_table_like::execute(THD*) /home/nik/mariadb/sql/sql_table.cc:11503:12
                #24 0x55fcb6b10be7 in mysql_execute_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:6076:26
                #25 0x55fcb6af0fba in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:7855:18
                #26 0x55fcb6ae56b9 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:1852:7
                #27 0x55fcb6aed4f2 in do_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:1398:17
                #28 0x55fcb708075a in do_handle_one_connection(CONNECT*) /home/nik/mariadb/sql/sql_connect.cc:1404:11
                #29 0x55fcb707fe8e in handle_one_connection /home/nik/mariadb/sql/sql_connect.cc:1309:3
             
            Thread T16 created by T0 here:
                #0 0x55fcb5f73a38 in pthread_create (/home/nik/mariadb/bld/sql/mysqld+0x1a8fa38) (BuildId: 846e397c702849e8)
                #1 0x55fcb7c2378b in os_thread_create_func(void* (*)(void*), void*, unsigned long*) /home/nik/mariadb/storage/innobase/os/os0thread.cc:138:8
                #2 0x55fcb7f3a485 in srv_start(bool) /home/nik/mariadb/storage/innobase/srv/srv0start.cc:2442:46
                #3 0x55fcb751c6c0 in innodb_init(void*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:4375:8
                #4 0x55fcb639432b in ha_initialize_handlerton(st_plugin_int*) /home/nik/mariadb/sql/handler.cc:549:31
                #5 0x55fcb6b91ad0 in plugin_initialize(st_mem_root*, st_plugin_int*, int*, char**, bool) /home/nik/mariadb/sql/sql_plugin.cc:1435:9
                #6 0x55fcb6b907b1 in plugin_init(int*, char**, int) /home/nik/mariadb/sql/sql_plugin.cc:1717:15
                #7 0x55fcb6058d6c in init_server_components() /home/nik/mariadb/sql/mysqld.cc:5476:7
                #8 0x55fcb6051fe6 in mysqld_main(int, char**) /home/nik/mariadb/sql/mysqld.cc:6095:7
                #9 0x55fcb6046d31 in main /home/nik/mariadb/sql/main.cc:25:10
                #10 0x7f96fc97084f  (/usr/lib/libc.so.6+0x2384f) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)
            

            nikitamalyavin Nikita Malyavin added a comment - I was lucky to reproduce it with ASAN, from the first time. ==58520==ERROR: AddressSanitizer: heap-use-after-free on address 0x618000037928 at pc 0x55fcb7e1ac3f bp 0x7f96eddc4c10 sp 0x7f96eddc4c08 READ of size 8 at 0x618000037928 thread T16 #0 0x55fcb7e1ac3e in purge_node_t::validate_pcur() /home/nik/mariadb/storage/innobase/row/row0purge.cc:1500:13 #1 0x55fcb7e191aa in row_purge_reposition_pcur(unsigned long, purge_node_t*, mtr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:74:3 #2 0x55fcb7e18390 in row_purge_poss_sec(purge_node_t*, dict_index_t*, dtuple_t const*, btr_pcur_t*, mtr_t*, bool) /home/nik/mariadb/storage/innobase/row/row0purge.cc:319:16 #3 0x55fcb7e2859f in row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, dtuple_t const*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:582:7 #4 0x55fcb7e27963 in row_purge_remove_sec_if_poss(purge_node_t*, dict_index_t*, dtuple_t const*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:695:6 #5 0x55fcb7e24aae in row_purge_del_mark(purge_node_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:769:4 #6 0x55fcb7e1e42d in row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1320:12 #7 0x55fcb7e1a3b5 in row_purge(purge_node_t*, unsigned char*, que_thr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1386:18 #8 0x55fcb7e19bc2 in row_purge_step(que_thr_t*) /home/nik/mariadb/storage/innobase/row/row0purge.cc:1464:3 #9 0x55fcb7cb20c9 in que_thr_step(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:966:9 #10 0x55fcb7cb002a in que_run_threads_low(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1028:14 #11 0x55fcb7cafa6f in que_run_threads(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1068:2 #12 0x55fcb7fb8a1d in trx_purge(unsigned long, bool, srv_slot_t*) /home/nik/mariadb/storage/innobase/trx/trx0purge.cc:1582:2 #13 0x55fcb7f256af in srv_do_purge(unsigned long*, srv_slot_t*) /home/nik/mariadb/storage/innobase/srv/srv0srv.cc:2607:20 #14 0x55fcb7f24535 in srv_purge_coordinator_thread /home/nik/mariadb/storage/innobase/srv/srv0srv.cc:2747:22 #15 0x7f96fc9d444a (/usr/lib/libc.so.6+0x8744a) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e) #16 0x7f96fca57e3f (/usr/lib/libc.so.6+0x10ae3f) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)   0x618000037928 is located 168 bytes inside of 800-byte region [0x618000037880,0x618000037ba0) freed by thread T23 here: #0 0x55fcb5ffee92 in __interceptor_free.part.0 (/home/nik/mariadb/bld/sql/mysqld+0x1b1ae92) (BuildId: 846e397c702849e8) #1 0x55fcb7bcd1cb in mem_heap_block_free(mem_block_info_t*, mem_block_info_t*) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:416:3 #2 0x55fcb768048b in mem_heap_free(mem_block_info_t*) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:417:3 #3 0x55fcb7687d3f in dict_mem_index_free(dict_index_t*) /home/nik/mariadb/storage/innobase/dict/dict0mem.cc:1108:2 #4 0x55fcb763f01c in dict_index_remove_from_cache_low(dict_table_t*, dict_index_t*, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2171:2 #5 0x55fcb7636c7d in dict_table_remove_from_cache_low(dict_table_t*, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:1829:3 #6 0x55fcb763f698 in dict_table_remove_from_cache(dict_table_t*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:1907:2 #7 0x55fcb7a52d24 in innobase_reload_table(THD*, dict_table_t*, st_mysql_const_lex_string const&) /home/nik/mariadb/storage/innobase/handler/handler0alter.cc:8918:3 #8 0x55fcb7a4bd44 in ha_innobase::commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool) /home/nik/mariadb/storage/innobase/handler/handler0alter.cc:10034:23 #9 0x55fcb63bccb6 in handler::ha_commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool) /home/nik/mariadb/sql/handler.cc:4618:11 #10 0x55fcb6e740b3 in mysql_inplace_alter_table(THD*, TABLE_LIST*, TABLE*, TABLE*, Alter_inplace_info*, MDL_request*, Alter_table_ctx*) /home/nik/mariadb/sql/sql_table.cc:7825:22 #11 0x55fcb6e61cee 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) /home/nik/mariadb/sql/sql_table.cc:10163:16 #12 0x55fcb7095b0c in Sql_cmd_alter_table::execute(THD*) /home/nik/mariadb/sql/sql_alter.cc:512:11 #13 0x55fcb6b10be7 in mysql_execute_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:6076:26 #14 0x55fcb6af0fba in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:7855:18 #15 0x55fcb6ae56b9 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:1852:7 #16 0x55fcb6aed4f2 in do_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:1398:17 #17 0x55fcb708075a in do_handle_one_connection(CONNECT*) /home/nik/mariadb/sql/sql_connect.cc:1404:11 #18 0x55fcb707fe8e in handle_one_connection /home/nik/mariadb/sql/sql_connect.cc:1309:3 #19 0x55fcb8266f4e in pfs_spawn_thread /home/nik/mariadb/storage/perfschema/pfs.cc:1869:3 #20 0x7f96fc9d444a (/usr/lib/libc.so.6+0x8744a) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)   previously allocated by thread T23 here: #0 0x55fcb5fffea9 in malloc (/home/nik/mariadb/bld/sql/mysqld+0x1b1bea9) (BuildId: 846e397c702849e8) #1 0x55fcb7bcbc62 in mem_heap_create_block_func(mem_block_info_t*, unsigned long, char const*, unsigned int, unsigned long) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:277:37 #2 0x55fcb7bccde5 in mem_heap_add_block(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/mem/mem0mem.cc:378:14 #3 0x55fcb767f2c9 in mem_heap_alloc(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:191:11 #4 0x55fcb767eeeb in mem_heap_zalloc(mem_block_info_t*, unsigned long) /home/nik/mariadb/storage/innobase/include/mem0mem.inl:160:16 #5 0x55fcb7685333 in dict_mem_index_create(dict_table_t*, char const*, unsigned long, unsigned long) /home/nik/mariadb/storage/innobase/dict/dict0mem.cc:770:3 #6 0x55fcb7645706 in dict_index_build_internal_non_clust(dict_index_t*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2641:14 #7 0x55fcb7640a15 in dict_index_add_to_cache(dict_index_t*&, unsigned long, dict_add_v_col_t const*) /home/nik/mariadb/storage/innobase/dict/dict0dict.cc:2016:6 #8 0x55fcb79b5378 in dict_create_index_step(que_thr_t*) /home/nik/mariadb/storage/innobase/dict/dict0crea.cc:1361:9 #9 0x55fcb7cb215a in que_thr_step(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:976:9 #10 0x55fcb7cb002a in que_run_threads_low(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1028:14 #11 0x55fcb7cafa6f in que_run_threads(que_thr_t*) /home/nik/mariadb/storage/innobase/que/que0que.cc:1068:2 #12 0x55fcb7dbac12 in row_create_index_for_mysql(dict_index_t*, trx_t*, unsigned long const*) /home/nik/mariadb/storage/innobase/row/row0mysql.cc:2559:3 #13 0x55fcb754d9cb in create_index(trx_t*, TABLE const*, dict_table_t*, unsigned int) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:11435:3 #14 0x55fcb74fb85c in create_table_info_t::create_table(bool) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:12581:19 #15 0x55fcb7550aca in ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*, bool, trx_t*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:13044:20 #16 0x55fcb74feaa4 in ha_innobase::create(char const*, TABLE*, HA_CREATE_INFO*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:13095:9 #17 0x55fcb63bdb16 in handler::ha_create(char const*, TABLE*, HA_CREATE_INFO*) /home/nik/mariadb/sql/handler.cc:4756:14 #18 0x55fcb63c3f8b in ha_create_table(THD*, char const*, char const*, char const*, HA_CREATE_INFO*, st_mysql_const_unsigned_lex_string*) /home/nik/mariadb/sql/handler.cc:5223:22 #19 0x55fcb6fa82a0 in rea_create_table(THD*, st_mysql_const_unsigned_lex_string*, char const*, char const*, char const*, HA_CREATE_INFO*, handler*, bool) /home/nik/mariadb/sql/unireg.cc:515:9 #20 0x55fcb6e4566a in create_table_impl(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, char const*, DDL_options_st, HA_CREATE_INFO*, Alter_info*, int, bool*, st_key**, unsigned int*, st_mysql_const_unsigned_lex_string*) /home/nik/mariadb/sql/sql_table.cc:5120:9 #21 0x55fcb6e43364 in mysql_create_table_no_lock(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, Table_specification_st*, Alter_info*, bool*, int, TABLE_LIST*) /home/nik/mariadb/sql/sql_table.cc:5239:8 #22 0x55fcb6e46d13 in mysql_create_table(THD*, TABLE_LIST*, Table_specification_st*, Alter_info*) /home/nik/mariadb/sql/sql_table.cc:5334:7 #23 0x55fcb6e81eec in Sql_cmd_create_table_like::execute(THD*) /home/nik/mariadb/sql/sql_table.cc:11503:12 #24 0x55fcb6b10be7 in mysql_execute_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:6076:26 #25 0x55fcb6af0fba in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:7855:18 #26 0x55fcb6ae56b9 in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /home/nik/mariadb/sql/sql_parse.cc:1852:7 #27 0x55fcb6aed4f2 in do_command(THD*) /home/nik/mariadb/sql/sql_parse.cc:1398:17 #28 0x55fcb708075a in do_handle_one_connection(CONNECT*) /home/nik/mariadb/sql/sql_connect.cc:1404:11 #29 0x55fcb707fe8e in handle_one_connection /home/nik/mariadb/sql/sql_connect.cc:1309:3   Thread T16 created by T0 here: #0 0x55fcb5f73a38 in pthread_create (/home/nik/mariadb/bld/sql/mysqld+0x1a8fa38) (BuildId: 846e397c702849e8) #1 0x55fcb7c2378b in os_thread_create_func(void* (*)(void*), void*, unsigned long*) /home/nik/mariadb/storage/innobase/os/os0thread.cc:138:8 #2 0x55fcb7f3a485 in srv_start(bool) /home/nik/mariadb/storage/innobase/srv/srv0start.cc:2442:46 #3 0x55fcb751c6c0 in innodb_init(void*) /home/nik/mariadb/storage/innobase/handler/ha_innodb.cc:4375:8 #4 0x55fcb639432b in ha_initialize_handlerton(st_plugin_int*) /home/nik/mariadb/sql/handler.cc:549:31 #5 0x55fcb6b91ad0 in plugin_initialize(st_mem_root*, st_plugin_int*, int*, char**, bool) /home/nik/mariadb/sql/sql_plugin.cc:1435:9 #6 0x55fcb6b907b1 in plugin_init(int*, char**, int) /home/nik/mariadb/sql/sql_plugin.cc:1717:15 #7 0x55fcb6058d6c in init_server_components() /home/nik/mariadb/sql/mysqld.cc:5476:7 #8 0x55fcb6051fe6 in mysqld_main(int, char**) /home/nik/mariadb/sql/mysqld.cc:6095:7 #9 0x55fcb6046d31 in main /home/nik/mariadb/sql/main.cc:25:10 #10 0x7f96fc97084f (/usr/lib/libc.so.6+0x2384f) (BuildId: 2f005a79cd1a8e385972f5a102f16adba414d75e)
            nikitamalyavin Nikita Malyavin added a comment - - edited

            I found it reproducing on a simpler (and a frustratingly basic) test case:

            create table t1 (pk int primary key, b int as(pk) unique) engine=innodb;
             
            insert into t1 (pk) values (1),(2),(3);
             
            begin;
            delete from t1;
            insert into t1 (pk) values (1),(2),(3);
            commit;
            alter table t1 add column c int;
            --sleep 1
            
            

            To note, only algorithm=instant is vulnerable. Inplace goes fine.

            nikitamalyavin Nikita Malyavin added a comment - - edited I found it reproducing on a simpler (and a frustratingly basic) test case: create table t1 (pk int primary key , b int as (pk) unique ) engine=innodb;   insert into t1 (pk) values (1),(2),(3);   begin ; delete from t1; insert into t1 (pk) values (1),(2),(3); commit ; alter table t1 add column c int ; --sleep 1 To note, only algorithm=instant is vulnerable. Inplace goes fine.

            Sadly (or not), it is only reproducible on 10.3. I tried 10.4-10.6 and 11.2, it never fails there, so closing it.

            For gcol.innodb_virtual_basic failures we have MDEV-16950, MDEV-26951, MDEV-30663

            nikitamalyavin Nikita Malyavin added a comment - Sadly (or not), it is only reproducible on 10.3. I tried 10.4-10.6 and 11.2, it never fails there, so closing it. For gcol.innodb_virtual_basic failures we have MDEV-16950 , MDEV-26951 , MDEV-30663

            People

              nikitamalyavin Nikita Malyavin
              elenst Elena Stepanova
              Votes:
              2 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.