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

Assertion `mtr->memo_contains(index->lock, MTR_MEMO_X_LOCK)' failed in btr_attach_half_pages

Details

    Description

      Notes:

      • Download the attached file earth.jpg to /tmp before running the test. If you choose another location, modify the test case to point at it.
      • I've set it to critical as a recent regression. The test case is admittedly not smart or practical, so I'm not making it a blocker.
        It is not completely artificial though. What happened originally is that a binary file was loaded into one of many columns of a table, then the table contents was selected into an outfile, and then the outfile was [attempted to be] loaded into the table again as LOAD INFILE. It shouldn't be done so, the blob breaks the outfile format, so resulting contents of the table is meaningless anyway; but the assertion failure raises a concern that the problem may expand to more meaningful use cases.

      --source include/have_innodb.inc
       
      CREATE TABLE t (f1 varbinary(255), key(f1)) ENGINE=InnoDB ROW_FORMAT=compressed;
      LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t;
       
      # Cleanup
      DROP TABLE t;
      

      10.6 8f87023d

      mariadbd: /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597: dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*): Assertion `mtr->memo_contains(index->lock, MTR_MEMO_X_LOCK)' failed.
      230501  1:16:34 [ERROR] mysqld got signal 6 ;
       
      0c05de0 "/data/src/10.6/storage/innobase/btr/btr0btr.cc", line=2597, function=0x556f40c09fa0 "dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*)") at ./assert/assert.c:101
      #10 0x0000556f3f77eb58 in btr_attach_half_pages (flags=7, index=0x6160009d5120, block=0x7f5b29049150, split_rec=0x7f5b2910913b "F\344", new_block=0x7f5b29047ea0, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597
      #11 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, tuple=0x61a0003ae720, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086cdd0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
      #12 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, entry=0x61a0003ae720, rec=0x7f5b2086cef0, big_rec=0x7f5b2086ced0, n_ext=0, thr=0x0, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
      #13 0x0000556f3f77e063 in btr_insert_on_non_leaf_level (flags=7, index=0x6160009d5120, level=1, tuple=0x61a0003ae720, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2487
      #14 0x0000556f3f77ec18 in btr_attach_half_pages (flags=0, index=0x6160009d5120, block=0x7f5b29060160, split_rec=0x7f5b2981cf08 "\017\262\377", new_block=0x7f5b29057400, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2615
      #15 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, tuple=0x617000051440, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086d8f0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
      #16 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, entry=0x617000051440, rec=0x7f5b2086da10, big_rec=0x7f5b2086da30, n_ext=0, thr=0x620000015940, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
      #17 0x0000556f3f597ca1 in row_ins_sec_index_entry_low (flags=0, mode=BTR_INSERT_TREE, index=0x6160009d5120, offsets_heap=0x61a0003b2898, heap=0x61a0003b1698, entry=0x617000051440, trx_id=0, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3143
      #18 0x0000556f3f598eb3 in row_ins_sec_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940, check_foreign=true) at /data/src/10.6/storage/innobase/row/row0ins.cc:3333
      #19 0x0000556f3f599138 in row_ins_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3367
      #20 0x0000556f3f59a2e8 in row_ins_index_entry_step (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3533
      #21 0x0000556f3f59ada2 in row_ins (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3658
      #22 0x0000556f3f59bd40 in row_ins_step (thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3787
      #23 0x0000556f3f5df1d6 in row_insert_for_mysql (mysql_rec=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377", prebuilt=0x620000015120, ins_mode=ROW_INS_NORMAL) at /data/src/10.6/storage/innobase/row/row0mysql.cc:1308
      #24 0x0000556f3f22f107 in ha_innobase::write_row (this=0x61d0002b66b8, record=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/storage/innobase/handler/ha_innodb.cc:7906
      #25 0x0000556f3e8225cc in handler::ha_write_row (this=0x61d0002b66b8, buf=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/sql/handler.cc:7603
      #26 0x0000556f3dec0a1f in write_record (thd=0x62b0000bd218, table=0x6190000df298, info=0x7f5b2086f530, sink=0x0) at /data/src/10.6/sql/sql_insert.cc:2157
      #27 0x0000556f3df5b16d in read_sep_field (thd=0x62b0000bd218, info=..., table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., read_info=..., enclosed=..., skip_lines=0, ignore_check_option_errors=true) at /data/src/10.6/sql/sql_load.cc:1182
      #28 0x0000556f3df572e0 in mysql_load (thd=0x62b0000bd218, ex=0x62b0000c4340, table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., handle_duplicates=DUP_ERROR, ignore=true, read_file_from_client=true) at /data/src/10.6/sql/sql_load.cc:687
      #29 0x0000556f3df872e0 in mysql_execute_command (thd=0x62b0000bd218, is_called_from_prepared_stmt=false) at /data/src/10.6/sql/sql_parse.cc:5040
      #30 0x0000556f3df9b437 in mysql_parse (thd=0x62b0000bd218, rawbuf=0x62b0000c4238 "LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t", length=52, parser_state=0x7f5b20870a30) at /data/src/10.6/sql/sql_parse.cc:8036
      #31 0x0000556f3df7127e in dispatch_command (command=COM_QUERY, thd=0x62b0000bd218, packet=0x629000280219 "x\301\034yD\v\036]\271%rC\206\270\241\262\357\310\263&\374\265\326\355\24176\002+\221\300\232'\027\252\376\327\302\337\360\277\360\271\037\261\363\005\312\247\350\353\366\375\325x\221\"\203\307\374\226\3449\377", packet_length=52, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1896
      #32 0x0000556f3df6dfbc in do_command (thd=0x62b0000bd218, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1409
      #33 0x0000556f3e3d983a in do_handle_one_connection (connect=0x608000003938, put_in_cache=true) at /data/src/10.6/sql/sql_connect.cc:1416
      #34 0x0000556f3e3d91fb in handle_one_connection (arg=0x6080000038b8) at /data/src/10.6/sql/sql_connect.cc:1318
      #35 0x0000556f3f032f08 in pfs_spawn_thread (arg=0x617000008218) at /data/src/10.6/storage/perfschema/pfs.cc:2201
      #36 0x00007f5b316a7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #37 0x00007f5b317285bc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      The failure started happening on 10.6+ after this commit

      commit f2096478d5750b983f9a9cc4691d20e152dafd4a
      Author: Marko Mäkelä
      Date:   Thu Mar 16 15:52:42 2023 +0200
       
          MDEV-29835 InnoDB hang on B-tree split or merge
      

      Attachments

        Issue Links

          Activity

            elenst Elena Stepanova created issue -
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            Description Notes:
            - Download the attached file [^earth.jpg] to {{/tmp}} before running the test. If you choose another location, modify the test case to point at it.
            - Set to critical as a recent regression. The test case is admittedly not smart or practical, so I'm not making it a blocker.
            _It is not completely artificial though. What happened originally is that a binary file was loaded into one of many columns of a table, then the table contents was selected into an outfile, and then the outfile was [attempted to be] loaded into the table again as LOAD INFILE. It shouldn't be done so, the blob breaks the outfile format, so resulting contents of the table is meaningless anyway; but the assertion failure raises a concern that the problem may expand to more meaningful use cases._

            {code:sql}
            --source include/have_innodb.inc

            CREATE TABLE t (f1 varbinary(255), key(f1)) ENGINE=InnoDB ROW_FORMAT=compressed;
            LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t;

            # Cleanup
            DROP TABLE t;
            {code}

            {noformat:title=10.6 8f87023d}
            mariadbd: /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597: dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*): Assertion `mtr->memo_contains(index->lock, MTR_MEMO_X_LOCK)' failed.
            230501 1:16:34 [ERROR] mysqld got signal 6 ;

            0c05de0 "/data/src/10.6/storage/innobase/btr/btr0btr.cc", line=2597, function=0x556f40c09fa0 "dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*)") at ./assert/assert.c:101
            #10 0x0000556f3f77eb58 in btr_attach_half_pages (flags=7, index=0x6160009d5120, block=0x7f5b29049150, split_rec=0x7f5b2910913b "F\344", new_block=0x7f5b29047ea0, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597
            #11 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, tuple=0x61a0003ae720, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086cdd0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
            #12 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, entry=0x61a0003ae720, rec=0x7f5b2086cef0, big_rec=0x7f5b2086ced0, n_ext=0, thr=0x0, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
            #13 0x0000556f3f77e063 in btr_insert_on_non_leaf_level (flags=7, index=0x6160009d5120, level=1, tuple=0x61a0003ae720, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2487
            #14 0x0000556f3f77ec18 in btr_attach_half_pages (flags=0, index=0x6160009d5120, block=0x7f5b29060160, split_rec=0x7f5b2981cf08 "\017\262\377", new_block=0x7f5b29057400, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2615
            #15 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, tuple=0x617000051440, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086d8f0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
            #16 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, entry=0x617000051440, rec=0x7f5b2086da10, big_rec=0x7f5b2086da30, n_ext=0, thr=0x620000015940, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
            #17 0x0000556f3f597ca1 in row_ins_sec_index_entry_low (flags=0, mode=BTR_INSERT_TREE, index=0x6160009d5120, offsets_heap=0x61a0003b2898, heap=0x61a0003b1698, entry=0x617000051440, trx_id=0, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3143
            #18 0x0000556f3f598eb3 in row_ins_sec_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940, check_foreign=true) at /data/src/10.6/storage/innobase/row/row0ins.cc:3333
            #19 0x0000556f3f599138 in row_ins_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3367
            #20 0x0000556f3f59a2e8 in row_ins_index_entry_step (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3533
            #21 0x0000556f3f59ada2 in row_ins (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3658
            #22 0x0000556f3f59bd40 in row_ins_step (thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3787
            #23 0x0000556f3f5df1d6 in row_insert_for_mysql (mysql_rec=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377", prebuilt=0x620000015120, ins_mode=ROW_INS_NORMAL) at /data/src/10.6/storage/innobase/row/row0mysql.cc:1308
            #24 0x0000556f3f22f107 in ha_innobase::write_row (this=0x61d0002b66b8, record=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/storage/innobase/handler/ha_innodb.cc:7906
            #25 0x0000556f3e8225cc in handler::ha_write_row (this=0x61d0002b66b8, buf=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/sql/handler.cc:7603
            #26 0x0000556f3dec0a1f in write_record (thd=0x62b0000bd218, table=0x6190000df298, info=0x7f5b2086f530, sink=0x0) at /data/src/10.6/sql/sql_insert.cc:2157
            #27 0x0000556f3df5b16d in read_sep_field (thd=0x62b0000bd218, info=..., table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., read_info=..., enclosed=..., skip_lines=0, ignore_check_option_errors=true) at /data/src/10.6/sql/sql_load.cc:1182
            #28 0x0000556f3df572e0 in mysql_load (thd=0x62b0000bd218, ex=0x62b0000c4340, table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., handle_duplicates=DUP_ERROR, ignore=true, read_file_from_client=true) at /data/src/10.6/sql/sql_load.cc:687
            #29 0x0000556f3df872e0 in mysql_execute_command (thd=0x62b0000bd218, is_called_from_prepared_stmt=false) at /data/src/10.6/sql/sql_parse.cc:5040
            #30 0x0000556f3df9b437 in mysql_parse (thd=0x62b0000bd218, rawbuf=0x62b0000c4238 "LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t", length=52, parser_state=0x7f5b20870a30) at /data/src/10.6/sql/sql_parse.cc:8036
            #31 0x0000556f3df7127e in dispatch_command (command=COM_QUERY, thd=0x62b0000bd218, packet=0x629000280219 "x\301\034yD\v\036]\271%rC\206\270\241\262\357\310\263&\374\265\326\355\24176\002+\221\300\232'\027\252\376\327\302\337\360\277\360\271\037\261\363\005\312\247\350\353\366\375\325x\221\"\203\307\374\226\3449\377", packet_length=52, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1896
            #32 0x0000556f3df6dfbc in do_command (thd=0x62b0000bd218, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1409
            #33 0x0000556f3e3d983a in do_handle_one_connection (connect=0x608000003938, put_in_cache=true) at /data/src/10.6/sql/sql_connect.cc:1416
            #34 0x0000556f3e3d91fb in handle_one_connection (arg=0x6080000038b8) at /data/src/10.6/sql/sql_connect.cc:1318
            #35 0x0000556f3f032f08 in pfs_spawn_thread (arg=0x617000008218) at /data/src/10.6/storage/perfschema/pfs.cc:2201
            #36 0x00007f5b316a7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
            #37 0x00007f5b317285bc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
            {noformat}

            The failure started happening on 10.6+ after this commit
            {noformat}
            commit f2096478d5750b983f9a9cc4691d20e152dafd4a
            Author: Marko Mäkelä
            Date: Thu Mar 16 15:52:42 2023 +0200

                MDEV-29835 InnoDB hang on B-tree split or merge
            {noformat}
            Notes:
            - Download the attached file [^earth.jpg] to {{/tmp}} before running the test. If you choose another location, modify the test case to point at it.
            - I've set it to critical as a recent regression. The test case is admittedly not smart or practical, so I'm not making it a blocker.
            _It is not completely artificial though. What happened originally is that a binary file was loaded into one of many columns of a table, then the table contents was selected into an outfile, and then the outfile was [attempted to be] loaded into the table again as LOAD INFILE. It shouldn't be done so, the blob breaks the outfile format, so resulting contents of the table is meaningless anyway; but the assertion failure raises a concern that the problem may expand to more meaningful use cases._

            {code:sql}
            --source include/have_innodb.inc

            CREATE TABLE t (f1 varbinary(255), key(f1)) ENGINE=InnoDB ROW_FORMAT=compressed;
            LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t;

            # Cleanup
            DROP TABLE t;
            {code}

            {noformat:title=10.6 8f87023d}
            mariadbd: /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597: dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*): Assertion `mtr->memo_contains(index->lock, MTR_MEMO_X_LOCK)' failed.
            230501 1:16:34 [ERROR] mysqld got signal 6 ;

            0c05de0 "/data/src/10.6/storage/innobase/btr/btr0btr.cc", line=2597, function=0x556f40c09fa0 "dberr_t btr_attach_half_pages(ulint, dict_index_t*, buf_block_t*, const rec_t*, buf_block_t*, ulint, mtr_t*)") at ./assert/assert.c:101
            #10 0x0000556f3f77eb58 in btr_attach_half_pages (flags=7, index=0x6160009d5120, block=0x7f5b29049150, split_rec=0x7f5b2910913b "F\344", new_block=0x7f5b29047ea0, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2597
            #11 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, tuple=0x61a0003ae720, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086cdd0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
            #12 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=7, cursor=0x7f5b2086cf50, offsets=0x7f5b2086cf30, heap=0x7f5b2086cf10, entry=0x61a0003ae720, rec=0x7f5b2086cef0, big_rec=0x7f5b2086ced0, n_ext=0, thr=0x0, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
            #13 0x0000556f3f77e063 in btr_insert_on_non_leaf_level (flags=7, index=0x6160009d5120, level=1, tuple=0x61a0003ae720, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2487
            #14 0x0000556f3f77ec18 in btr_attach_half_pages (flags=0, index=0x6160009d5120, block=0x7f5b29060160, split_rec=0x7f5b2981cf08 "\017\262\377", new_block=0x7f5b29057400, direction=111, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:2615
            #15 0x0000556f3f781ed6 in btr_page_split_and_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, tuple=0x617000051440, n_ext=0, mtr=0x7f5b2086dfc0, err=0x7f5b2086d8f0) at /data/src/10.6/storage/innobase/btr/btr0btr.cc:3133
            #16 0x0000556f3f7c71ab in btr_cur_pessimistic_insert (flags=0, cursor=0x7f5b2086dab0, offsets=0x7f5b2086d9f0, heap=0x7f5b2086da50, entry=0x617000051440, rec=0x7f5b2086da10, big_rec=0x7f5b2086da30, n_ext=0, thr=0x620000015940, mtr=0x7f5b2086dfc0) at /data/src/10.6/storage/innobase/btr/btr0cur.cc:2663
            #17 0x0000556f3f597ca1 in row_ins_sec_index_entry_low (flags=0, mode=BTR_INSERT_TREE, index=0x6160009d5120, offsets_heap=0x61a0003b2898, heap=0x61a0003b1698, entry=0x617000051440, trx_id=0, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3143
            #18 0x0000556f3f598eb3 in row_ins_sec_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940, check_foreign=true) at /data/src/10.6/storage/innobase/row/row0ins.cc:3333
            #19 0x0000556f3f599138 in row_ins_index_entry (index=0x6160009d5120, entry=0x617000051440, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3367
            #20 0x0000556f3f59a2e8 in row_ins_index_entry_step (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3533
            #21 0x0000556f3f59ada2 in row_ins (node=0x620000015608, thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3658
            #22 0x0000556f3f59bd40 in row_ins_step (thr=0x620000015940) at /data/src/10.6/storage/innobase/row/row0ins.cc:3787
            #23 0x0000556f3f5df1d6 in row_insert_for_mysql (mysql_rec=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377", prebuilt=0x620000015120, ins_mode=ROW_INS_NORMAL) at /data/src/10.6/storage/innobase/row/row0mysql.cc:1308
            #24 0x0000556f3f22f107 in ha_innobase::write_row (this=0x61d0002b66b8, record=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/storage/innobase/handler/ha_innodb.cc:7906
            #25 0x0000556f3e8225cc in handler::ha_write_row (this=0x61d0002b66b8, buf=0x6190000df7c8 "\376\377\017\025\364\312\341/\230\277.\356\364;\351\240\352\203x\211\037n\277\311\376\257\355d6XZ&!\210\344\r\b\303P\3127\335w\2126\361\340\277\236i\355\302[\300\322|1\223\272\206\257\036#\3552.\002)\303\341=1\315lx\203\370\214\016\325]\230\345\243\2701*\307\207\305\352r,G\300\325\357\376W\371<rm\344\217)\257\234#\232]J\355\243\266\263ZT\232\360\345\366~\327\331\217\226B \270h\017$?\020\351]\372\377") at /data/src/10.6/sql/handler.cc:7603
            #26 0x0000556f3dec0a1f in write_record (thd=0x62b0000bd218, table=0x6190000df298, info=0x7f5b2086f530, sink=0x0) at /data/src/10.6/sql/sql_insert.cc:2157
            #27 0x0000556f3df5b16d in read_sep_field (thd=0x62b0000bd218, info=..., table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., read_info=..., enclosed=..., skip_lines=0, ignore_check_option_errors=true) at /data/src/10.6/sql/sql_load.cc:1182
            #28 0x0000556f3df572e0 in mysql_load (thd=0x62b0000bd218, ex=0x62b0000c4340, table_list=0x62b0000c43e8, fields_vars=..., set_fields=..., set_values=..., handle_duplicates=DUP_ERROR, ignore=true, read_file_from_client=true) at /data/src/10.6/sql/sql_load.cc:687
            #29 0x0000556f3df872e0 in mysql_execute_command (thd=0x62b0000bd218, is_called_from_prepared_stmt=false) at /data/src/10.6/sql/sql_parse.cc:5040
            #30 0x0000556f3df9b437 in mysql_parse (thd=0x62b0000bd218, rawbuf=0x62b0000c4238 "LOAD DATA LOCAL INFILE '/tmp/earth.jpg' INTO TABLE t", length=52, parser_state=0x7f5b20870a30) at /data/src/10.6/sql/sql_parse.cc:8036
            #31 0x0000556f3df7127e in dispatch_command (command=COM_QUERY, thd=0x62b0000bd218, packet=0x629000280219 "x\301\034yD\v\036]\271%rC\206\270\241\262\357\310\263&\374\265\326\355\24176\002+\221\300\232'\027\252\376\327\302\337\360\277\360\271\037\261\363\005\312\247\350\353\366\375\325x\221\"\203\307\374\226\3449\377", packet_length=52, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1896
            #32 0x0000556f3df6dfbc in do_command (thd=0x62b0000bd218, blocking=true) at /data/src/10.6/sql/sql_parse.cc:1409
            #33 0x0000556f3e3d983a in do_handle_one_connection (connect=0x608000003938, put_in_cache=true) at /data/src/10.6/sql/sql_connect.cc:1416
            #34 0x0000556f3e3d91fb in handle_one_connection (arg=0x6080000038b8) at /data/src/10.6/sql/sql_connect.cc:1318
            #35 0x0000556f3f032f08 in pfs_spawn_thread (arg=0x617000008218) at /data/src/10.6/storage/perfschema/pfs.cc:2201
            #36 0x00007f5b316a7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
            #37 0x00007f5b317285bc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
            {noformat}

            The failure started happening on 10.6+ after this commit
            {noformat}
            commit f2096478d5750b983f9a9cc4691d20e152dafd4a
            Author: Marko Mäkelä
            Date: Thu Mar 16 15:52:42 2023 +0200

                MDEV-29835 InnoDB hang on B-tree split or merge
            {noformat}

            The assertion was added in MDEV-29835 in order to catch potential deadlocks of the same type. Apparently the logic for escalating to exclusive index locking is inadequate for ROW_FORMAT=COMPRESSED tables, which are much more likely to involve page splits than uncompressed tables.

            marko Marko Mäkelä added a comment - The assertion was added in MDEV-29835 in order to catch potential deadlocks of the same type. Apparently the logic for escalating to exclusive index locking is inadequate for ROW_FORMAT=COMPRESSED tables, which are much more likely to involve page splits than uncompressed tables.
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.8 [ 26121 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Labels regression hang regression

            My initial attempts at creating a simpler test case for this failed, but I will keep trying.

            --source include/have_innodb.inc
            --source include/have_sequence.inc
            SET @save_compression_level = @@GLOBAL.innodb_compression_level;
            SET GLOBAL innodb_compression_level = 0;
            CREATE TABLE t(f1 varbinary(257), key(f1)) ENGINE=InnoDB ROW_FORMAT=compressed
            SELECT repeat(' ',100+mod(1337*seq, 157)) FROM seq_1_to_10000;
            DROP TABLE t;
            SET GLOBAL innodb_compression_level = @save_compression_level;
            

            I already have a simple fix: btr_cur_need_opposite_intention() needs to check also page_zip_available() and escalate to exclusive index latch when a non-leaf ROW_FORMAT=COMPRESSED page may have insufficient space for the node pointer record.

            marko Marko Mäkelä added a comment - My initial attempts at creating a simpler test case for this failed, but I will keep trying. --source include/have_innodb.inc --source include/have_sequence.inc SET @save_compression_level = @@ GLOBAL .innodb_compression_level; SET GLOBAL innodb_compression_level = 0; CREATE TABLE t(f1 varbinary(257), key (f1)) ENGINE=InnoDB ROW_FORMAT=compressed SELECT repeat( ' ' ,100+mod(1337*seq, 157)) FROM seq_1_to_10000; DROP TABLE t; SET GLOBAL innodb_compression_level = @save_compression_level; I already have a simple fix: btr_cur_need_opposite_intention() needs to check also page_zip_available() and escalate to exclusive index latch when a non-leaf ROW_FORMAT=COMPRESSED page may have insufficient space for the node pointer record.
            marko Marko Mäkelä made changes -
            Status Open [ 1 ] In Progress [ 3 ]

            I pushed a fix for testing, along with a simpler test case that reproduce the failure with all innodb_page_size (4k, 8k, 16k). The trick was to use KEY_BLOCK_SIZE=1 and innodb_compression_level=0 to make it fail with a smaller number of rows, and then replace each row from the original dataset with a unique prefix.

            marko Marko Mäkelä added a comment - I pushed a fix for testing, along with a simpler test case that reproduce the failure with all innodb_page_size (4k, 8k, 16k). The trick was to use KEY_BLOCK_SIZE=1 and innodb_compression_level=0 to make it fail with a smaller number of rows, and then replace each row from the original dataset with a unique prefix.

            origin/bb-10.6-MDEV-31158 ab3fd97345943f131bc65ef05894f78a1ff4be32 2023-05-08T18:37:10+03:00
            performed well in RQG testing.

            mleich Matthias Leich added a comment - origin/bb-10.6- MDEV-31158 ab3fd97345943f131bc65ef05894f78a1ff4be32 2023-05-08T18:37:10+03:00 performed well in RQG testing.

            This is now merged up to the 10.11 branch.

            marko Marko Mäkelä added a comment - This is now merged up to the 10.11 branch.
            marko Marko Mäkelä made changes -
            issue.field.resolutiondate 2023-05-11 08:05:26.0 2023-05-11 08:05:26.058
            marko Marko Mäkelä made changes -
            Fix Version/s 11.0.2 [ 28706 ]
            Fix Version/s 11.1.1 [ 28704 ]
            Fix Version/s 10.6.14 [ 28914 ]
            Fix Version/s 10.9.7 [ 28916 ]
            Fix Version/s 10.10.5 [ 28917 ]
            Fix Version/s 10.11.4 [ 28918 ]
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.9 [ 26905 ]
            Fix Version/s 10.10 [ 27530 ]
            Fix Version/s 10.11 [ 27614 ]
            Fix Version/s 11.0 [ 28320 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            julien.fritsch Julien Fritsch made changes -
            serg Sergei Golubchik made changes -
            serg Sergei Golubchik made changes -
            mariadb-jira-automation Jira Automation (IT) made changes -
            Zendesk Related Tickets 138595

            People

              marko Marko Mäkelä
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              4 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.