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

mysqld crash with signal 11 when renaming table+max_statement_time

Details

    • Bug
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Fixed
    • 10.4.5, 10.4.10, 10.4(EOL)
    • 10.4.13
    • Parser
    • None

    Description

      When we try to rename table with 'SET STATEMENT max_statement_time=180' it crashes mysqld with signal 11. We could reproduce it easily even if the table doesn't exist.
      A simple rename table works fine without using 'SET STATEMEMT..'

      MariaDB [test]> SET STATEMENT max_statement_time=180 FOR RENAME TABLE bleh TO blah;
      ERROR 2013 (HY000): Lost connection to MySQL server during query
      MariaDB [test]>
       
      Stack trace:
       
      Thread pointer: 0x7fa1480009a8
      Attempting backtrace. You can use the following information to find out
      where mysqld died. If you see no messages after this, something went
      terribly wrong...
      stack_bottom = 0x7fa30c8d9e90 thread_stack 0x49000
      /glide/mariadb/10.4.12.test/bin/mysqld(my_print_stacktrace+0x2b)[0x5654a880aa6b]
      mysys/stacktrace.c:270(my_print_stacktrace)[0x5654a825bf87]
      sigaction.c:0(__restore_rt)[0x7fa3303b05d0]
      sql/sql_parse.cc:8165(st_select_lex::add_table_to_list(THD*, Table_ident*, st_mysql_const_lex_string*, unsigned long, thr_lock_type, enum_mdl_type, List<Index_hint>*, List<String>*, st_mysql_lex_string*))[0x5654a806a108]
      sql/sql_yacc.yy:9033(MYSQLparse(THD*))[0x5654a82017e3]
      sql/sql_parse.cc:10207(parse_sql(THD*, Parser_state*, Object_creation_ctx*, bool))[0x5654a806d08d]
      sql/sql_parse.cc:7856(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x5654a80748b6]
      sql/sql_lex.h:4678(Parser_state::reset(char*, unsigned int))[0x5654a80760eb]
      sql/sql_parse.cc:1360(do_command(THD*))[0x5654a80778d1]
      sql/sql_connect.cc:1412(do_handle_one_connection(CONNECT*))[0x5654a8147902]
      sql/sql_connect.cc:1318(handle_one_connection)[0x5654a81479e4]
      perfschema/pfs.cc:1872(pfs_spawn_thread)[0x5654a83ef96d]
      pthread_create.c:0(start_thread)[0x7fa3303a8dd5]
      /lib64/libc.so.6(clone+0x6d)[0x7fa32f283ead]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x7fa148013fe0): SET STATEMENT max_statement_time=180 FOR RENAME TABLE blah_datea TO blah
      Connection ID (thread ID): 12
      Status: NOT_KILLED
      

      Attachments

        Activity

          alice Alice Sherepa added a comment -

          Thanks! Repeated as described on 10.4

          10.4 c1eaa385ffb44bdf6264d

          #4  0x0000559a6aacf44a in st_select_lex::add_table_to_list (this=0x0, thd=0x7f4b34000a88, table=0x7f4b34114bb0, alias=0x0, table_options=1, lock_type=TL_IGNORE, mdl_type=MDL_EXCLUSIVE, index_hints_arg=0x0, partition_names=0x0, option=0x0) at /10.4/sql/sql_parse.cc:8165
          #5  0x0000559a6ad7c4bc in MYSQLparse (thd=0x7f4b34000a88) at /10.4/sql/sql_yacc.yy:9033
          #6  0x0000559a6aad3c09 in parse_sql (thd=0x7f4b34000a88, parser_state=0x7f4b46becfd0, creation_ctx=0x0, do_pfs_digest=true) at /10.4/sql/sql_parse.cc:10207
          #7  0x0000559a6aace35c in mysql_parse (thd=0x7f4b34000a88, rawbuf=0x7f4b340d1730 "SET STATEMENT max_statement_time=180 FOR RENAME TABLE blah_datea TO blah", length=72, parser_state=0x7f4b46becfd0, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:7854
          #8  0x0000559a6aab9584 in dispatch_command (command=COM_QUERY, thd=0x7f4b34000a88, packet=0x7f4b34007bc9 "SET STATEMENT max_statement_time=180 FOR RENAME TABLE blah_datea TO blah", packet_length=72, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:1842
          #9  0x0000559a6aab7be5 in do_command (thd=0x7f4b34000a88) at /10.4/sql/sql_parse.cc:1360
          #10 0x0000559a6ac48133 in do_handle_one_connection (connect=0x559a6e4a97b8) at /10.4/sql/sql_connect.cc:1412
          #11 0x0000559a6ac47e5c in handle_one_connection (arg=0x559a6e4a97b8) at /10.4/sql/sql_connect.cc:1316
          #12 0x0000559a6b6a786f in pfs_spawn_thread (arg=0x559a6e3e6c78) at /10.4/storage/perfschema/pfs.cc:1869
          #13 0x00007f4b4ed876ba in start_thread (arg=0x7f4b46bee700) at pthread_create.c:333
          #14 0x00007f4b4d96a41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
          

          alice Alice Sherepa added a comment - Thanks! Repeated as described on 10.4 10.4 c1eaa385ffb44bdf6264d #4 0x0000559a6aacf44a in st_select_lex::add_table_to_list (this=0x0, thd=0x7f4b34000a88, table=0x7f4b34114bb0, alias=0x0, table_options=1, lock_type=TL_IGNORE, mdl_type=MDL_EXCLUSIVE, index_hints_arg=0x0, partition_names=0x0, option=0x0) at /10.4/sql/sql_parse.cc:8165 #5 0x0000559a6ad7c4bc in MYSQLparse (thd=0x7f4b34000a88) at /10.4/sql/sql_yacc.yy:9033 #6 0x0000559a6aad3c09 in parse_sql (thd=0x7f4b34000a88, parser_state=0x7f4b46becfd0, creation_ctx=0x0, do_pfs_digest=true) at /10.4/sql/sql_parse.cc:10207 #7 0x0000559a6aace35c in mysql_parse (thd=0x7f4b34000a88, rawbuf=0x7f4b340d1730 "SET STATEMENT max_statement_time=180 FOR RENAME TABLE blah_datea TO blah", length=72, parser_state=0x7f4b46becfd0, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:7854 #8 0x0000559a6aab9584 in dispatch_command (command=COM_QUERY, thd=0x7f4b34000a88, packet=0x7f4b34007bc9 "SET STATEMENT max_statement_time=180 FOR RENAME TABLE blah_datea TO blah", packet_length=72, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:1842 #9 0x0000559a6aab7be5 in do_command (thd=0x7f4b34000a88) at /10.4/sql/sql_parse.cc:1360 #10 0x0000559a6ac48133 in do_handle_one_connection (connect=0x559a6e4a97b8) at /10.4/sql/sql_connect.cc:1412 #11 0x0000559a6ac47e5c in handle_one_connection (arg=0x559a6e4a97b8) at /10.4/sql/sql_connect.cc:1316 #12 0x0000559a6b6a786f in pfs_spawn_thread (arg=0x559a6e3e6c78) at /10.4/storage/perfschema/pfs.cc:1869 #13 0x00007f4b4ed876ba in start_thread (arg=0x7f4b46bee700) at pthread_create.c:333 #14 0x00007f4b4d96a41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

          Notes for future:
          Table_ident is NULL on dd_table_to_list() call, and it looks impossible because each of 3 branches of this rule in parser checks that it is not NULL.

          sanja Oleksandr Byelkin added a comment - Notes for future: Table_ident is NULL on dd_table_to_list() call, and it looks impossible because each of 3 branches of this rule in parser checks that it is not NULL.

          A bit more such commends

          --error ER_NO_SUCH_TABLE
          SET STATEMENT max_statement_time=180 FOR RENAME TABLE bleh TO blah;
          SET STATEMENT max_statement_time=180 FOR load index into cache t1_base;
          --error ER_NO_SUCH_TABLE
          SET STATEMENT max_statement_time=180 FOR DROP INDEX i1 ON t1;
          SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.t1;
          SET STATEMENT max_statement_time=180 FOR BACKUP UNLOCK;
          SET STATEMENT max_statement_time=180 FOR DROP INDEX i1 ON t1;
          

          sanja Oleksandr Byelkin added a comment - A bit more such commends --error ER_NO_SUCH_TABLE SET STATEMENT max_statement_time=180 FOR RENAME TABLE bleh TO blah; SET STATEMENT max_statement_time=180 FOR load index into cache t1_base; --error ER_NO_SUCH_TABLE SET STATEMENT max_statement_time=180 FOR DROP INDEX i1 ON t1; SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.t1; SET STATEMENT max_statement_time=180 FOR BACKUP UNLOCK; SET STATEMENT max_statement_time=180 FOR DROP INDEX i1 ON t1;

          People

            sanja Oleksandr Byelkin
            muhammad.irfan Muhammad Irfan
            Votes:
            1 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.