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

storage/innobase/page/page0cur.cc:1306: rec_t* page_cur_insert_rec_low(const page_cur_t*, dict_index_t*, const rec_t*, offset_t*, mtr_t*): Assertion `rdm - rd + bd <= insert_buf + rec_size' failed.

Details

    Description

      Assert hit during RQG testing on
      10.5 41fe972db7cb48ac4cf4047edbe24a4ae3339bd8 build with debug
      ...
      # 2020-02-17T14:38:46 [217502] | mysqld: storage/innobase/page/page0cur.cc:1306: rec_t* page_cur_insert_rec_low(const page_cur_t*, dict_index_t*, const rec_t*, offset_t*, mtr_t*): Assertion `rdm - rd + bd <= insert_buf + rec_size' failed.
      # 2020-02-17T14:38:46 [217502] | 200217 14:37:49 [ERROR] mysqld got signal 6 ;
      ...
      # 2020-02-17T14:38:46 [217502] | Query (0x7ff088011520): UPDATE t3 SET col1 = NULL LIMIT 2  /* E_R Thread1 QNO 18624 CON_ID 139 */
      # 2020-02-17T14:38:46 [217502] | Connection ID (thread ID): 139
      # 2020-02-17T14:38:46 [217502] | Status: NOT_KILLED
      ...
      # 2020-02-17T14:38:46 [217502] #3  <signal handler called>
      # 2020-02-17T14:38:46 [217502] #4  0x00007ff0e7b93207 in raise () from /lib64/libc.so.6
      # 2020-02-17T14:38:46 [217502] #5  0x00007ff0e7b948f8 in abort () from /lib64/libc.so.6
      # 2020-02-17T14:38:46 [217502] #6  0x00007ff0e7b8c026 in __assert_fail_base () from /lib64/libc.so.6
      # 2020-02-17T14:38:46 [217502] #7  0x00007ff0e7b8c0d2 in __assert_fail () from /lib64/libc.so.6
      # 2020-02-17T14:38:46 [217502] #8  0x0000563db646c2ee in page_cur_insert_rec_low (cur=0x7ff0e02cda18, index=0x7ff0842a4c90, rec=0x7ff088153636 "1111111111         \200", offsets=0x7ff088153610, mtr=0x7ff0e02cdd10) at storage/innobase/page/page0cur.cc:1306
      # 2020-02-17T14:38:46 [217502] #9  0x0000563db65ef508 in page_cur_tuple_insert (cursor=0x7ff0e02cda18, tuple=0x7ff088153180, index=0x7ff0842a4c90, offsets=0x7ff0e02cd9b8, heap=0x7ff0e02cd990, n_ext=0, mtr=0x7ff0e02cdd10) at storage/innobase/include/page0cur.ic:285
      # 2020-02-17T14:38:46 [217502] #10 0x0000563db65fa67f in btr_page_split_and_insert (flags=0, cursor=0x7ff0e02cda10, offsets=0x7ff0e02cd9b8, heap=0x7ff0e02cd990, tuple=0x7ff088153180, n_ext=0, mtr=0x7ff0e02cdd10) at storage/innobase/btr/btr0btr.cc:3012
      # 2020-02-17T14:38:46 [217502] #11 0x0000563db66260c6 in btr_cur_pessimistic_insert (flags=0, cursor=0x7ff0e02cda10, offsets=0x7ff0e02cd9b8, heap=0x7ff0e02cd990, entry=0x7ff088153180, rec=0x7ff0e02cd9c0, big_rec=0x7ff0e02cd9c8, n_ext=0, thr=0x7ff08815e8b0, mtr=0x7ff0e02cdd10) at storage/innobase/btr/btr0cur.cc:3754
      # 2020-02-17T14:38:46 [217502] #12 0x0000563db64e1ae3 in row_ins_sec_index_entry_low (flags=0, mode=33, index=0x7ff0842a4c90, offsets_heap=0x7ff088153590, heap=0x7ff088153a20, entry=0x7ff088153180, trx_id=0, thr=0x7ff08815e8b0) at storage/innobase/row/row0ins.cc:3139
      # 2020-02-17T14:38:46 [217502] #13 0x0000563db64e22b9 in row_ins_sec_index_entry (index=0x7ff0842a4c90, entry=0x7ff088153180, thr=0x7ff08815e8b0, check_foreign=true) at storage/innobase/row/row0ins.cc:3330
      # 2020-02-17T14:38:46 [217502] #14 0x0000563db6564b75 in row_upd_sec_index_entry (node=0x7ff08815e3f8, thr=0x7ff08815e8b0) at storage/innobase/row/row0upd.cc:2224
      # 2020-02-17T14:38:46 [217502] #15 0x0000563db6564dda in row_upd_sec_step (node=0x7ff08815e3f8, thr=0x7ff08815e8b0) at storage/innobase/row/row0upd.cc:2251
      # 2020-02-17T14:38:46 [217502] #16 0x0000563db6567d39 in row_upd (node=0x7ff08815e3f8, thr=0x7ff08815e8b0) at storage/innobase/row/row0upd.cc:3031
      # 2020-02-17T14:38:46 [217502] #17 0x0000563db656817d in row_upd_step (thr=0x7ff08815e8b0) at storage/innobase/row/row0upd.cc:3146
      # 2020-02-17T14:38:46 [217502] #18 0x0000563db6508e7d in row_update_for_mysql (prebuilt=0x7ff08815da80) at storage/innobase/row/row0mysql.cc:1889
      # 2020-02-17T14:38:46 [217502] #19 0x0000563db636717a in ha_innobase::update_row (this=0x7ff088117870, old_row=0x7ff088124a38 "\232\376\001", new_row=0x7ff0881247f0 "\232\376") at storage/innobase/handler/ha_innodb.cc:8569
      # 2020-02-17T14:38:46 [217502] #20 0x0000563db5e59047 in handler::ha_update_row (this=0x7ff088117870, old_data=0x7ff088124a38 "\232\376\001", new_data=0x7ff0881247f0 "\232\376") at sql/handler.cc:6702
      # 2020-02-17T14:38:46 [217502] #21 0x0000563db5c17e05 in mysql_update (thd=0x7ff088000a98, table_list=0x7ff088011660, fields=..., values=..., conds=0x0, order_num=0, order=0x0, limit=2, ignore=false, found_return=0x7ff0e02cffd0, updated_return=0x7ff0e02d0090) at sql/sql_update.cc:1055
      # 2020-02-17T14:38:46 [217502] #22 0x0000563db5af8b74 in mysql_execute_command (thd=0x7ff088000a98) at sql/sql_parse.cc:4360
      # 2020-02-17T14:38:46 [217502] #23 0x0000563db5b05121 in mysql_parse (thd=0x7ff088000a98, rawbuf=0x7ff088011520 "UPDATE t3 SET col1 = NULL LIMIT 2  /* E_R Thread1 QNO 18624 CON_ID 139 */", length=73, parser_state=0x7ff0e02d0580, is_com_multi=false, is_next_command=false) at sql/sql_parse.cc:7918
      # 2020-02-17T14:38:46 [217502] #24 0x0000563db5af0f26 in dispatch_command (command=COM_QUERY, thd=0x7ff088000a98, packet=0x7ff0880e3759 "UPDATE t3 SET col1 = NULL LIMIT 2  /* E_R Thread1 QNO 18624 CON_ID 139 */ ", packet_length=74, is_com_multi=false, is_next_command=false) at sql/sql_parse.cc:1845
      # 2020-02-17T14:38:46 [217502] #25 0x0000563db5aef5b3 in do_command (thd=0x7ff088000a98) at sql/sql_parse.cc:1364
      # 2020-02-17T14:38:46 [217502] #26 0x0000563db5c91a3a in do_handle_one_connection (connect=0x563db9592838, put_in_cache=true) at sql/sql_connect.cc:1422
      # 2020-02-17T14:38:46 [217502] #27 0x0000563db5c91753 in handle_one_connection (arg=0x563db969add8) at sql/sql_connect.cc:1319
      # 2020-02-17T14:38:46 [217502] #28 0x00007ff0e8fa3dd5 in start_thread () from /lib64/libpthread.so.0
      # 2020-02-17T14:38:46 [217502] #29 0x00007ff0e7c5aead in clone () from /lib64/libc.so.6
       
      10.5.2 commit 6618fc29749f8521c5a0a007ae6d6fadb5121717
      No replay on 10.4, 10.3, 10.2
       
      How to replay
      ---------------------
      move the MDEV-21749.* to <source tree>/mysql-test/main
      cd <tree with binaries>/mysql-test
      ./mysql-test-run.pl --mem MDEV-21749 --mysqld=--innodb_page_size=4K --max-test-fail=0 --repeat=100
      I need usually less than 20 repeats.
      

      Attachments

        1. MDEV-21749.result
          0.1 kB
          Matthias Leich
        2. MDEV-21749.test
          0.7 kB
          Matthias Leich
        3. rqg.log
          2.78 MB
          Matthias Leich

        Issue Links

          Activity

            Before we entered the preceding comparison loop, we failed to check that the comparison does not start after c_end, the end of the cur->rec.
            A similar bug should be possible in PageBulk::insertPage(), although probably much harder to repeat.

            marko Marko Mäkelä added a comment - Before we entered the preceding comparison loop, we failed to check that the comparison does not start after c_end , the end of the cur->rec . A similar bug should be possible in PageBulk::insertPage() , although probably much harder to repeat.

            People

              marko Marko Mäkelä
              mleich Matthias Leich
              Votes:
              0 Vote for this issue
              Watchers:
              3 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.