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

Mangled data after IMPORT tablespace up till assert for DDL

    XMLWordPrintable

Details

    Description

      CREATE TABLE `t1` (
      `col_varchar_255` varchar(255),
      `col_text` text,
      `col_int` int) ENGINE=innodb ;
      INSERT /*! IGNORE */ INTO t1 VALUES 
      ('director', 'rifle', 9) ,
      ('commissioner', 'examination', 4) ,
      ('y', 'intervention', NULL) ,
      ('assure', 'previously', 2) ,
      ('m', 'appointment', 559480832) ,
      ('opposed', 'miracle', NULL) ,
      ('planet', 'prayer', -1602027520) ,
      ('hug', 'write', 5) ,
      ('y', 'versus', 5) ,
      ('n', 'preliminary', 64290816) ;
      FLUSH TABLES t1 FOR EXPORT ;
      'copy ibd file to safe place''
      UNLOCK TABLES ;
      CREATE TABLE imp_t1 (
      `col_varchar_255` varchar(255) PRIMARY KEY,
      `col_text` text,
      `col_int` int
      ) ENGINE=innodb ;
      ALTER TABLE imp_t1 DISCARD TABLESPACE ;
      'copy ibd file around'
      ALTER TABLE imp_t1 IMPORT TABLESPACE ;
      Warnings:
      Warning 1810    IO Read error: (2, No such file or directory) Error opening './test/imp_t1.cfg', will attempt to import without schema verification
      ##### imp_t1 has crippled data
      SELECT '->' S1, col_varchar_255, '<->' S2, col_text, '<->' S3, col_int, '<-' S4 FROM t1;
      S1      col_varchar_255 S2      col_text        S3      col_int S4
      ->      director        <->     rifle   <->     9       <-
      ->      commissioner    <->     examination     <->     4       <-
      ->      y       <->     intervention    <->     NULL    <-
      ->      assure  <->     previously      <->     2       <-
      ->      m       <->     appointment     <->     559480832       <-
      ->      opposed <->     miracle <->     NULL    <-
      ->      planet  <->     prayer  <->     -1602027520     <-
      ->      hug     <->     write   <->     5       <-
      ->      y       <->     versus  <->     5       <-
      ->      n       <->     preliminary     <->     64290816        <-
      SELECT '->' S1, col_varchar_255, '<->' S2, col_text, '<->' S3, col_int, '<-' S4 FROM imp_t1;
      S1      col_varchar_255 S2      col_text        S3      col_int S4
      ->              <->     recto   <->     -227382938      <-
      ->              <->     sionerexami     <->     -295603095      <-
      ->              <->     yinterv <->     -445746071      <-
      ->              <->     assureprev      <->     -378571405      <-
      ->              <->     mappoi  <->     -294359707      <-
      ->              <->     pposedm <->     -378379933      <-
      ->              <->     planet  <->     -260939399      <-
      ->              <->     hu      <->     -411602327      <-
      ->              <->     y       <->     -161123725      <-
      ->              <->     npreli  <->     -311857567      <-
      ##### expect to crash with btr0bulk.cc:176: void PageBulk::insertPage(rec_t*, rec_offs*) [with PageBulk::format <anonymous> = PageBulk::DYNAMIC; rec_t = unsigned char; rec_offs = short unsigned int]: Assertion `cmp_rec_rec(rec, old_rec, offsets, old_offsets, m_index) > 0' failed. ####
      ALTER TABLE imp_t1 ADD KEY idx ( col_varchar_255 ) ;
      ERROR HY000: Lost connection to server during query
      DROP TABLE t1, imp_t1 ;
      ERROR HY000: Server has gone away
       
      mariadbd: /data/Server/bb-10.6-MDEV-26131/storage/innobase/btr/btr0bulk.cc:176: void PageBulk::insertPage(rec_t*, rec_offs*) [with PageBulk::format <anonymous> = PageBulk::DYNAMIC; rec_t = unsigned char; rec_offs = short unsigned int]: Assertion `cmp_rec_rec(rec, old_rec, offsets, old_offsets, m_index) > 0' failed.
      210715  9:48:57 [ERROR] mysqld got signal 6 ;
       
      mysys/stacktrace.c:212(my_print_stacktrace)[0x5598436e122e]
      sql/signal_handler.cc:225(handle_fatal_signal)[0x55984245f373]
      sigaction.c:0(__restore_rt)[0x7fdc7ad8b3c0]
      linux/raise.c:51(__GI_raise)[0x7fdc7a87718b]
      stdlib/abort.c:81(__GI_abort)[0x7fdc7a856859]
      intl/loadmsgcat.c:509(get_sysdep_segment_value)[0x7fdc7a856729]
      :0(__GI___assert_fail)[0x7fdc7a867f36]
      btr/btr0bulk.cc:179(void PageBulk::insertPage<(PageBulk::format)1>(unsigned char*, unsigned short*))[0x559843288472]
      btr/btr0bulk.cc:335(PageBulk::insert(unsigned char const*, unsigned short*))[0x5598432846ae]
      btr/btr0bulk.cc:1130(BtrBulk::insert(dtuple_t*, unsigned long))[0x5598432826ef]
      include/btr0bulk.h:302(BtrBulk::insert(dtuple_t*))[0x55984305a2c8]
      row/row0merge.cc:3630(row_merge_insert_index_tuples(dict_index_t*, dict_table_t const*, pfs_os_file_t const&, unsigned char*, row_merge_buf_t const*, BtrBulk*, unsigned long, double, double, unsigned char*, unsigned long, ut_stage_alter_t*))[0x5598430bf5d5]
      row/row0merge.cc:2622(row_merge_read_clustered_index(trx_t*, TABLE*, dict_table_t const*, dict_table_t*, bool, dict_index_t**, dict_index_t*, fts_psort_t*, merge_file_t*, unsigned long const*, unsigned long, dtuple_t const*, dict_add_v_col_t const*, unsigned long const*, unsigned long, ib_sequence_t&, unsigned char*, bool, pfs_os_file_t*, ut_stage_alter_t*, double, unsigned char*, TABLE*, bool))[0x5598430b842a]
      row/row0merge.cc:4548(row_merge_build_indexes(trx_t*, dict_table_t*, dict_table_t*, bool, dict_index_t**, unsigned long const*, unsigned long, TABLE*, dtuple_t const*, unsigned long const*, unsigned long, ib_sequence_t&, bool, ut_stage_alter_t*, dict_add_v_col_t const*, TABLE*, bool))[0x5598430c471f]
      handler/handler0alter.cc:8463(ha_innobase::inplace_alter_table(TABLE*, Alter_inplace_info*))[0x559842e09bcc]
      sql/handler.h:4684(handler::ha_inplace_alter_table(TABLE*, Alter_inplace_info*))[0x559841f2a8d6]
      sql/sql_table.cc:7378(mysql_inplace_alter_table(THD*, TABLE_LIST*, TABLE*, TABLE*, Alter_inplace_info*, MDL_request*, st_ddl_log_state*, TRIGGER_RENAME_PARAM*, Alter_table_ctx*))[0x559841f09f34]
      sql/sql_table.cc:10207(mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool, bool))[0x559841f1da3a]
      sql/sql_alter.cc:550(Sql_cmd_alter_table::execute(THD*))[0x5598420a9fe5]
      sql/sql_parse.cc:5993(mysql_execute_command(THD*, bool))[0x559841cb0d1a]
      sql/sql_parse.cc:8026(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x559841cbd1ec]
      sql/sql_parse.cc:1898(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x559841c9548b]
      sql/sql_parse.cc:1404(do_command(THD*, bool))[0x559841c92863]
      sql/sql_connect.cc:1410(do_handle_one_connection(CONNECT*, bool))[0x5598420904c2]
      sql/sql_connect.cc:1314(handle_one_connection)[0x55984208fe24]
      nptl/pthread_create.c:478(start_thread)[0x7fdc7ad7f609]
      x86_64/clone.S:97(__GI___clone)[0x7fdc7a953293]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x62b0000d2238): ALTER TABLE imp_t1 ADD KEY idx ( col_varchar_255 )
       
      Connection ID (thread ID): 4
      Status: NOT_KILLED
       
      origin/bb-10.6-MDEV-26131 ffc41e1cf56809f82e97daad4869fecac4b46fed 2021-07-13T23:31:16+05:30  build with debug and ASAN.
      Some build without debug has the same mangled data but does not assert.
       
      origin/10.6, 10.6 315380a4d16ddb16461d906a23be341e354c30ed 2021-07-01T19:06:53+03:00  build with debug
      The same mangled data and
      mariadbd: /data/Server/10.6G/storage/innobase/btr/btr0bulk.cc:176: void PageBulk::insertPage(rec_t*, rec_offs*) [with PageBulk::format <anonymous> = PageBulk::DYNAMIC; rec_t = unsigned char; rec_offs = short unsigned int]: Assertion `cmp_rec_rec(rec, old_rec, offsets, old_offsets, m_index) > 0' failed.
      Thread 1 (Thread 0x7f4152884700 (LWP 3855140)):
      #0  __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
      #1  0x000055c131a124a1 in my_write_core (sig=6) at /data/Server/10.6G/mysys/stacktrace.c:424
      #2  0x000055c1311da6d3 in handle_fatal_signal (sig=6) at /data/Server/10.6G/sql/signal_handler.cc:344
      #3  <signal handler called>
      #4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #5  0x00007f41582e8859 in __GI_abort () at abort.c:79
      #6  0x00007f41582e8729 in __assert_fail_base (fmt=0x7f415847e588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55c131f62ea0 "cmp_rec_rec(rec, old_rec, offsets, old_offsets, m_index) > 0", file=0x55c131f61b28 "/data/Server/10.6G/storage/innobase/btr/btr0bulk.cc", line=176, function=<optimized out>) at assert.c:92
      #7  0x00007f41582f9f36 in __GI___assert_fail (assertion=0x55c131f62ea0 "cmp_rec_rec(rec, old_rec, offsets, old_offsets, m_index) > 0", file=0x55c131f61b28 "/data/Server/10.6G/storage/innobase/btr/btr0bulk.cc", line=176, function=0x55c131f62f38 "void PageBulk::insertPage(rec_t*, rec_offs*) [with PageBulk::format <anonymous> = PageBulk::DYNAMIC; rec_t = unsigned char; rec_offs = short unsigned int]") at assert.c:101
      #8  0x000055c1318181c8 in PageBulk::insertPage<(PageBulk::format)1> (this=0x7f4128069700, rec=0x7f4128069e7e "", offsets=0x7f4128069e80) at /data/Server/10.6G/storage/innobase/btr/btr0bulk.cc:176
      #9  0x000055c13181654a in PageBulk::insert (this=0x7f4128069700, rec=0x7f4128069e7e "", offsets=0x7f4128069e80) at /data/Server/10.6G/storage/innobase/btr/btr0bulk.cc:334
      #10 0x000055c1318153b3 in BtrBulk::insert (this=0x7f415287ee70, tuple=0x7f41280596f8, level=0) at /data/Server/10.6G/storage/innobase/btr/btr0bulk.cc:1128
      #11 0x000055c1316fae46 in BtrBulk::insert (this=0x7f415287ee70, tuple=0x7f41280596f8) at /data/Server/10.6G/storage/innobase/include/btr0bulk.h:301
      #12 0x000055c13172fa2a in row_merge_insert_index_tuples (index=0x7f4128057f10, old_table=0x7f4128175050, fd=..., block=0x0, row_buf=0x7f41281100f0, btr_bulk=0x7f415287ee70, table_total_rows=9, pct_progress=0, pct_cost=50, crypt_block=0x0, space=6, stage=0x0) at /data/Server/10.6G/storage/innobase/row/row0merge.cc:3630
      #13 0x000055c13172c62a in row_merge_read_clustered_index (trx=0x7f4153c001b8, table=0x7f41528803f0, old_table=0x7f4128175050, new_table=0x7f4128175050, online=true, index=0x7f4128057480, fts_sort_idx=0x0, psort_info=0x0, files=0x7f412807ec30, key_numbers=0x7f4128057488, n_index=1, defaults=0x0, add_v=0x0, col_map=0x0, add_autoinc=18446744073709551615, sequence=..., block=0x7f41404f9000 <error: Cannot access memory at address 0x7f41404f9000>, skip_pk_sort=false, tmpfd=0x7f415287f5a0, stage=0x7f412810b500, pct_cost=50, crypt_block=0x0, eval_table=0x7f41528803f0, allow_not_null=false) at /data/Server/10.6G/storage/innobase/row/row0merge.cc:2622
      #14 0x000055c131732568 in row_merge_build_indexes (trx=0x7f4153c001b8, old_table=0x7f4128175050, new_table=0x7f4128175050, online=true, indexes=0x7f4128057480, key_numbers=0x7f4128057488, n_indexes=1, table=0x7f41528803f0, defaults=0x0, col_map=0x0, add_autoinc=18446744073709551615, sequence=..., skip_pk_sort=false, stage=0x7f412810b500, add_v=0x0, eval_table=0x7f41528803f0, allow_not_null=false) at /data/Server/10.6G/storage/innobase/row/row0merge.cc:4548
      #15 0x000055c1315dab3c in ha_innobase::inplace_alter_table (this=0x7f4128050fb0, altered_table=0x7f41528803f0, ha_alter_info=0x7f4152880330) at /data/Server/10.6G/storage/innobase/handler/handler0alter.cc:8463
      #16 0x000055c130f71e69 in handler::ha_inplace_alter_table (this=0x7f4128050fb0, altered_table=0x7f41528803f0, ha_alter_info=0x7f4152880330) at /data/Server/10.6G/sql/handler.h:4681
      #17 0x000055c130f63d2d in mysql_inplace_alter_table (thd=0x7f4128000d48, table_list=0x7f41280142d0, table=0x7f412804bd58, altered_table=0x7f41528803f0, ha_alter_info=0x7f4152880330, target_mdl_request=0x7f4152880bf0, ddl_log_state=0x7f41528802f0, trigger_param=0x7f41528807c0, alter_ctx=0x7f4152881750) at /data/Server/10.6G/sql/sql_table.cc:7378
      #18 0x000055c130f6c3e7 in mysql_alter_table (thd=0x7f4128000d48, new_db=0x7f4128005758, new_name=0x7f4128005b70, create_info=0x7f4152882540, table_list=0x7f41280142d0, alter_info=0x7f4152882450, order_num=0, order=0x0, ignore=false, if_exists=false) at /data/Server/10.6G/sql/sql_table.cc:10202
      #19 0x000055c131015231 in Sql_cmd_alter_table::execute (this=0x7f4128014aa0, thd=0x7f4128000d48) at /data/Server/10.6G/sql/sql_alter.cc:550
      #20 0x000055c130e76112 in mysql_execute_command (thd=0x7f4128000d48, is_called_from_prepared_stmt=false) at /data/Server/10.6G/sql/sql_parse.cc:5995
      #21 0x000055c130e7be88 in mysql_parse (thd=0x7f4128000d48, rawbuf=0x7f41280141c0 "ALTER TABLE imp_t1 ADD KEY idx ( col_varchar_255 )", length=50, parser_state=0x7f4152883580) at /data/Server/10.6G/sql/sql_parse.cc:8028
      #22 0x000055c130e68a01 in dispatch_command (command=COM_QUERY, thd=0x7f4128000d48, packet=0x7f4128087079 "ALTER TABLE imp_t1 ADD KEY idx ( col_varchar_255 ) ", packet_length=51, blocking=true) at /data/Server/10.6G/sql/sql_parse.cc:1898
      #23 0x000055c130e6750b in do_command (thd=0x7f4128000d48, blocking=true) at /data/Server/10.6G/sql/sql_parse.cc:1406
      #24 0x000055c13100ad3a in do_handle_one_connection (connect=0x55c13438d618, put_in_cache=true) at /data/Server/10.6G/sql/sql_connect.cc:1410
      #25 0x000055c13100aa9b in handle_one_connection (arg=0x55c1343841a8) at /data/Server/10.6G/sql/sql_connect.cc:1312
      #26 0x00007f4158811609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #27 0x00007f41583e5293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
       
      I am aware that the CREATE TABLE statement of the target table differs a bit.
      Nevertheless I would appreciate if the server/InnoDB would somehow detect that there seems to be something
      wrong and abort the import of the tablespace.
      
      

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              mleich Matthias Leich
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

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