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

Assertion `cs->mbmaxlen <= MAX_MULTI_BYTE_CHAR_SIZE' failed in myrocks::rdb_get_mem_comparable_space and thread hang in 'creating table'

    XMLWordPrintable

Details

    Description

      INSTALL PLUGIN RocksDB SONAME 'ha_rocksdb.so';
      CREATE TABLE t1 (f INT) ENGINE=InnoDB;
      SELECT * FROM t1 INTO OUTFILE 'a';
      SET SESSION collation_server=filename;
      DROP DATABASE test;
      SELECT User FROM mysql.user;
      CREATE TABLE t2 (a VARCHAR(2),b TEXT,KEY(a,b(1))) ENGINE=RocksDB;
      

      Leads to tread hangs in optimized builds:

      11.0.1 4d09050ca77a7efac4565d46e4bcd85a5f210c53 (Optimized)

      MariaDB [test]> show processlist;
      +----+------+-----------+------+---------+------+----------------+------------------------------------------------------------------+----------+
      | Id | User | Host      | db   | Command | Time | State          | Info                                                             | Progress |
      +----+------+-----------+------+---------+------+----------------+------------------------------------------------------------------+----------+
      |  4 | root | localhost | test | Query   |  566 | creating table | CREATE TABLE t2 (a VARCHAR(2),b TEXT,KEY(a,b(1))) ENGINE=RocksDB |    0.000 |
      |  5 | root | localhost | test | Query   |    0 | starting       | show processlist                                                 |    0.000 |
      +----+------+-----------+------+---------+------+----------------+------------------------------------------------------------------+----------+
      2 rows in set (0.000 sec)
      

      And a crash in debug builds:

      11.0.1 4d09050ca77a7efac4565d46e4bcd85a5f210c53 (Debug)

      mysqld: /test/11.0_dbg/storage/rocksdb/rdb_datadic.cc:3065: void myrocks::rdb_get_mem_comparable_space(CHARSET_INFO*, const std::vector<unsigned char>**, size_t*, size_t*): Assertion `cs->mbmaxlen <= MAX_MULTI_BYTE_CHAR_SIZE' failed.
      

      11.0.1 4d09050ca77a7efac4565d46e4bcd85a5f210c53 (Debug)

      Core was generated by `/test/MD110223-mariadb-11.0.1-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=23414417991232)
          at ./nptl/pthread_kill.c:44
      [Current thread is 1 (Thread 0x154b98112640 (LWP 3951499))]
      (gdb) bt
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=23414417991232) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=23414417991232) at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=23414417991232, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
      #3  0x0000154bb09ab476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
      #4  0x0000154bb09917f3 in __GI_abort () at ./stdlib/abort.c:79
      #5  0x0000154bb099171b in __assert_fail_base (fmt=0x154bb0b46150 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x154b76ec3210 "cs->mbmaxlen <= MAX_MULTI_BYTE_CHAR_SIZE", file=0x154b76ec1290 "/test/11.0_dbg/storage/rocksdb/rdb_datadic.cc", line=3065, function=<optimized out>) at ./assert/assert.c:92
      #6  0x0000154bb09a2e96 in __GI___assert_fail (assertion=0x154b76ec3210 "cs->mbmaxlen <= MAX_MULTI_BYTE_CHAR_SIZE", file=0x154b76ec1290 "/test/11.0_dbg/storage/rocksdb/rdb_datadic.cc", line=3065, function=0x154b76ec31a0 "void myrocks::rdb_get_mem_comparable_space(CHARSET_INFO*, const std::vector<unsigned char>**, size_t*, size_t*)") at ./assert/assert.c:101
      #7  0x0000154b76bc3709 in myrocks::rdb_get_mem_comparable_space (cs=cs@entry=0x562c814225a0 <my_charset_filename>, xfrm=xfrm@entry=0x154b9810d348, xfrm_len=xfrm_len@entry=0x154b9810d350, mb_len=mb_len@entry=0x154b9810d358) at /test/11.0_dbg/storage/rocksdb/rdb_datadic.cc:3065
      #8  0x0000154b76bc6e87 in myrocks::Rdb_field_packing::setup (this=this@entry=0x154b9810d320, key_descr=key_descr@entry=0x0, field=0x154aa4294e38, keynr_arg=keynr_arg@entry=0, key_part_arg=key_part_arg@entry=0, key_length=<optimized out>) at /test/11.0_dbg/storage/rocksdb/rdb_datadic.cc:3422
      #9  0x0000154b76b701f7 in myrocks::ha_rocksdb::check_keyread_allowed (this=this@entry=0x154aa4295090, inx=inx@entry=0, part=0, all_parts=<optimized out>) at /test/11.0_dbg/storage/rocksdb/ha_rocksdb.cc:7931
      #10 0x0000154b76b70342 in myrocks::ha_rocksdb::index_flags (this=0x154aa4295090, inx=0, part=<optimized out>, all_parts=<optimized out>) at /test/11.0_dbg/storage/rocksdb/ha_rocksdb.cc:8286
      #11 0x0000562c8008fd24 in TABLE_SHARE::init_from_binary_frm_image (this=this@entry=0x154b9810e010, thd=thd@entry=0x154aa4000d58, write=<optimized out>, frm_image=<optimized out>, frm_length=<optimized out>, par_image=par_image@entry=0x0, par_length=<optimized out>) at /test/11.0_dbg/sql/table.cc:3076
      #12 0x0000562c8023c77e in ha_create_table (thd=thd@entry=0x154aa4000d58, path=<optimized out>, db=0x154aa4013988 "test", table_name=0x154aa4013238 "t2", create_info=create_info@entry=0x154b9810f410, frm=frm@entry=0x154b9810ee60, skip_frm_file=false) at /test/11.0_dbg/sql/handler.cc:5911
      #13 0x0000562c80044d86 in create_table_impl (thd=thd@entry=0x154aa4000d58, ddl_log_state_create=ddl_log_state_create@entry=0x154b9810f190, ddl_log_state_rm=<optimized out>, ddl_log_state_rm@entry=0x154b9810f320, orig_db=@0x154aa4013288: {str = 0x154aa4013988 "test", length = 4}, orig_table_name=@0x154aa4013298: {str = 0x154aa4013238 "t2", length = 2}, db=@0x154aa4013288: {str = 0x154aa4013988 "test", length = 4}, table_name=@0x154aa4013298: {str = 0x154aa4013238 "t2", length = 2}, path=@0x154b9810ee50: {str = 0x154b9810ee70 "./test/t2", length = 9}, options=<optimized out>, create_info=0x154b9810f410, alter_info=0x154b9810f230, create_table_mode=0, is_trans=0x154b9810f170, key_info=0x154b9810ee48, key_count=0x154b9810ee44, frm=0x154b9810ee60) at /test/11.0_dbg/sql/sql_table.cc:4607
      #14 0x0000562c800450fc in mysql_create_table_no_lock (thd=thd@entry=0x154aa4000d58, ddl_log_state_create=ddl_log_state_create@entry=0x154b9810f190, ddl_log_state_rm=ddl_log_state_rm@entry=0x154b9810f320, db=db@entry=0x154aa4013288, table_name=table_name@entry=0x154aa4013298, create_info=create_info@entry=0x154b9810f410, alter_info=0x154b9810f230, is_trans=0x154b9810f170, create_table_mode=0, table_list=0x154aa4013270) at /test/11.0_dbg/sql/sql_table.cc:4708
      #15 0x0000562c80046fb4 in mysql_create_table (alter_info=0x154b9810f230, create_info=0x154b9810f410, create_table=0x154aa4013270, thd=0x154aa4000d58) at /test/11.0_dbg/sql/sql_table.cc:4824
      #16 Sql_cmd_create_table_like::execute (this=<optimized out>, thd=0x154aa4000d58) at /test/11.0_dbg/sql/sql_table.cc:12411
      #17 0x0000562c7ff72cb7 in mysql_execute_command (thd=thd@entry=0x154aa4000d58, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/11.0_dbg/sql/sql_parse.cc:6001
      #18 0x0000562c7ff746d0 in mysql_parse (thd=thd@entry=0x154aa4000d58, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x154b981112c0) at /test/11.0_dbg/sql/sql_parse.cc:8000
      #19 0x0000562c7ff76864 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x154aa4000d58, packet=packet@entry=0x154aa400ae09 "CREATE TABLE t2 (a VARCHAR(2),b TEXT,KEY(a,b(1))) ENGINE=RocksDB", packet_length=packet_length@entry=64, blocking=blocking@entry=true) at /test/11.0_dbg/sql/sql_class.h:242
      #20 0x0000562c7ff786bd in do_command (thd=0x154aa4000d58, blocking=blocking@entry=true) at /test/11.0_dbg/sql/sql_parse.cc:1407
      #21 0x0000562c800c34e4 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x562c822fbca8, put_in_cache=put_in_cache@entry=true) at /test/11.0_dbg/sql/sql_connect.cc:1416
      #22 0x0000562c800c3743 in handle_one_connection (arg=0x562c822fbca8) at /test/11.0_dbg/sql/sql_connect.cc:1318
      #23 0x0000154bb09fdb43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #24 0x0000154bb0a8fa00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      Crash confirmed present in:
      MariaDB: 10.3.38 (dbg), 10.4.29 (dbg), 10.5.20 (dbg), 10.6.13 (dbg), 10.7.8 (dbg), 10.8.8 (dbg), 10.9.6 (dbg), 10.10.4 (dbg), 10.11.2 (dbg), 11.0.1 (dbg)

      Hang confirmed present in:
      MariaDB: 10.3.38 (opt), 10.4.29 (opt), 10.5.20 (opt), 10.6.13 (opt), 10.7.8 (opt), 10.8.8 (opt), 10.9.6 (opt), 10.10.4 (opt), 10.11.2 (opt), 11.0.1 (opt)

      Attachments

        Activity

          People

            bar Alexander Barkov
            Roel Roel Van de Paar
            Votes:
            0 Vote for this issue
            Watchers:
            1 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.