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

Assertion `thd->transaction.stmt.is_empty()' failed in Locked_tables_list::unlock_locked_tables

Details

    • 10.2.12, 10.2.14

    Description

      10.2 ca3c8d9b58fdc267b

      mysqld: /data/src/10.2/sql/sql_base.cc:2153: void Locked_tables_list::unlock_locked_tables(THD*): Assertion `thd->transaction.stmt.is_empty()' failed.
      170926 17:12:24 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f4a73b09ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x000055baadf8c00a in Locked_tables_list::unlock_locked_tables (this=0x7f4a10004510, thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_base.cc:2153
      #9  0x000055baadf8c08f in Locked_tables_list::unlock_locked_table (this=0x7f4a10004510, thd=0x7f4a10000b00, mdl_ticket=0x0) at /data/src/10.2/sql/sql_base.cc:2196
      #10 0x000055baae0c61f4 in mysql_create_table (thd=0x7f4a10000b00, create_table=0x7f4a10012588, create_info=0x7f4a64762920, alter_info=0x7f4a64762870) at /data/src/10.2/sql/sql_table.cc:5121
      #11 0x000055baadffeabd in mysql_execute_command (thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_parse.cc:3966
      #12 0x000055baae00b24a in mysql_parse (thd=0x7f4a10000b00, rawbuf=0x7f4a10012438 "CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED", length=80, parser_state=0x7f4a64763200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7875
      #13 0x000055baadff8efb in dispatch_command (command=COM_QUERY, thd=0x7f4a10000b00, packet=0x7f4a1013ea71 "CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED", packet_length=80, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1812
      #14 0x000055baadff7875 in do_command (thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_parse.cc:1360
      #15 0x000055baae144ae1 in do_handle_one_connection (connect=0x55bab2530340) at /data/src/10.2/sql/sql_connect.cc:1354
      #16 0x000055baae14486e in handle_one_connection (arg=0x55bab2530340) at /data/src/10.2/sql/sql_connect.cc:1260
      #17 0x000055baae561616 in pfs_spawn_thread (arg=0x55bab253a8b0) at /data/src/10.2/storage/perfschema/pfs.cc:1862
      #18 0x00007f4a75a4e494 in start_thread (arg=0x7f4a64764700) at pthread_create.c:333
      #19 0x00007f4a73bc693f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      --source include/have_innodb.inc
       
      CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB;
      CREATE TEMPORARY TABLE t2 (b INT, c INT) ENGINE=InnoDB ROW_FORMAT=COMPACT;
      LOCK TABLE t2 WRITE;
      ALTER TABLE t2 DROP COLUMN c;
      CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
      

      Reproducible on older 10.2 builds too.
      First noticed some time around MDEV-10813 development.
      No visible problems on non-debug builds.

      Attachments

        Issue Links

          Activity

            elenst Elena Stepanova created issue -
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            Affects Version/s N/A [ 14700 ]
            elenst Elena Stepanova made changes -
            Component/s Storage Engine - InnoDB [ 10129 ]
            Fix Version/s 10.2 [ 14601 ]
            Affects Version/s 10.2 [ 14601 ]
            Affects Version/s N/A [ 14700 ]
            Assignee Elena Stepanova [ elenst ] Sergey Vojtovich [ svoj ]
            Description {noformat:title=bb-10.2-mdev10813 e5e8f407d62f431e0bf94cd65f88e06f4c19773e}
            mysqld: /home/elenst/git/bb-10.2-mdev10813/sql/sql_base.cc:2140: void Locked_tables_list::unlock_locked_tables(THD*): Assertion `thd->transaction.stmt.is_empty()' failed.
            161014 16:48:55 [ERROR] mysqld got signal 6 ;

            # 2016-10-14T16:50:13 [16356] #7 0x00007fe85cc2b192 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
            # 2016-10-14T16:50:13 [16356] #8 0x00007fe85f3ec93f in Locked_tables_list::unlock_locked_tables (this=0x7fe79462a9a8, thd=0x7fe794627070) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_base.cc:2140
            # 2016-10-14T16:50:13 [16356] #9 0x00007fe85f3ecc9d in Locked_tables_list::unlink_all_closed_tables (this=0x7fe79462a9a8, thd=0x7fe794627070, lock=0x0, reopen_count=18446744073709551615) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_base.cc:2317
            # 2016-10-14T16:50:13 [16356] #10 0x00007fe85f3ecee6 in Locked_tables_list::reopen_tables (this=0x7fe79462a9a8, thd=0x7fe794627070) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_base.cc:2381
            # 2016-10-14T16:50:13 [16356] #11 0x00007fe85f3e95f2 in close_cached_tables (thd=0x7fe794627070, tables=0x0, wait_for_refresh=true, timeout=31536000) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_base.cc:484
            # 2016-10-14T16:50:13 [16356] #12 0x00007fe85f5d9791 in reload_acl_and_cache (thd=0x7fe794627070, options=4, tables=0x0, write_to_binlog=0x7fe85b5624b0) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_reload.cc:330
            # 2016-10-14T16:50:13 [16356] #13 0x00007fe85f46161f in mysql_execute_command (thd=0x7fe794627070) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_parse.cc:5293
            # 2016-10-14T16:50:13 [16356] #14 0x00007fe85f469007 in mysql_parse (thd=0x7fe794627070, rawbuf=0x7fe794671088 "FLUSH TABLES /* QNO 1960 CON_ID 40 PID 16510 */", length=47, parser_state=0x7fe85b562db0, is_com_multi=false, is_next_command=false) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_parse.cc:7796
            # 2016-10-14T16:50:13 [16356] #15 0x00007fe85f456c4a in dispatch_command (command=COM_QUERY, thd=0x7fe794627070, packet=0x7fe78858a071 " FLUSH TABLES /* QNO 1960 CON_ID 40 PID 16510 */ ", packet_length=49, is_com_multi=false, is_next_command=false) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_parse.cc:1806
            # 2016-10-14T16:50:13 [16356] #16 0x00007fe85f45560a in do_command (thd=0x7fe794627070) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_parse.cc:1366
            # 2016-10-14T16:50:13 [16356] #17 0x00007fe85f59dfa0 in do_handle_one_connection (connect=0x7fe85c05db70) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_connect.cc:1354
            # 2016-10-14T16:50:13 [16356] #18 0x00007fe85f59dd2d in handle_one_connection (arg=0x7fe85c05db70) at /home/elenst/git/bb-10.2-mdev10813/sql/sql_connect.cc:1260
            # 2016-10-14T16:50:13 [16356] #19 0x00007fe85d7d8e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
            # 2016-10-14T16:50:13 [16356] #20 0x00007fe85ccefcbd in clone () from /lib/x86_64-linux-gnu/libc.so.6
            {noformat}

            {noformat}
            perl /home/elenst/git/rqg/runall-new.pl --no-mask --seed=1476452704 --threads=32 --duration=600 --queries=100M --reporters=QueryTimeout,Backtrace,ErrorLog,Deadlock --validators=TransformerNoComparator --transformers=ExecuteAsPreparedTwice --redefine=conf/mariadb/general-workarounds.yy --redefine=conf/mariadb/10.0-features-redefine.yy --mysqld=--log_output=FILE --mysqld=--slow_query_log --mysqld=--log_bin_trust_function_creators=1 --mysqld=--innodb-buffer-pool-size=2G --mysqld=--innodb-log-file-size=256M --mysqld=--innodb-flush-log-at-trx-commit=2 --redefine=conf/mariadb/redefine_random_keys.yy --grammar=conf/replication/replication-ddl_sql.yy --gendata=conf/replication/replication-ddl_data.zz --engine=InnoDB --mysqld=--transaction-isolation=READ-COMMITTED --mtr-build-thread=72 --basedir=/home/elenst/git/bb-10.2-mdev10813/debug --vardir=/home/elenst/test_results/mdev10813-8/current1_1
            {noformat}

            {noformat}
            diff --git a/conf/mariadb/10.0-features-redefine.yy b/conf/mariadb/10.0-features-redefine.yy
            index ac44571..2e096cb 100644
            --- a/conf/mariadb/10.0-features-redefine.yy
            +++ b/conf/mariadb/10.0-features-redefine.yy
            @@ -65,10 +65,10 @@ explain_iud_extended:
             # Engine-independent statistics
             
             engine_independent_statistics:
            - eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            - eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            - eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            - eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            +# eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            +# eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            +# eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
            +# eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats | eistat_analyze_stats |
                    eistat_set_use_stat_tables | eistat_set_use_stat_tables |
                    eistat_select_stat ;
             
            diff --git a/lib/GenTest/Executor/MySQL.pm b/lib/GenTest/Executor/MySQL.pm
            index c081fa4..0339496 100644
            --- a/lib/GenTest/Executor/MySQL.pm
            +++ b/lib/GenTest/Executor/MySQL.pm
            @@ -536,7 +536,7 @@ sub reportError {
             sub execute {
                 my ($executor, $query, $execution_flags) = @_;
                 
            - $query .= ' /* QNO ' . (++$query_no) . ' CON_ID ' . $executor->connectionId() . ' */ ';
            + $query .= ' /* QNO ' . (++$query_no) . ' CON_ID ' . $executor->connectionId() . ' PID ' . $$ . ' */ ';
             
                 $execution_flags = $execution_flags | $executor->flags();
             {noformat}
            {noformat:title=10.2 ca3c8d9b58fdc267b}
            mysqld: /data/src/10.2/sql/sql_base.cc:2153: void Locked_tables_list::unlock_locked_tables(THD*): Assertion `thd->transaction.stmt.is_empty()' failed.
            170926 17:12:24 [ERROR] mysqld got signal 6 ;

            #7 0x00007f4a73b09ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
            #8 0x000055baadf8c00a in Locked_tables_list::unlock_locked_tables (this=0x7f4a10004510, thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_base.cc:2153
            #9 0x000055baadf8c08f in Locked_tables_list::unlock_locked_table (this=0x7f4a10004510, thd=0x7f4a10000b00, mdl_ticket=0x0) at /data/src/10.2/sql/sql_base.cc:2196
            #10 0x000055baae0c61f4 in mysql_create_table (thd=0x7f4a10000b00, create_table=0x7f4a10012588, create_info=0x7f4a64762920, alter_info=0x7f4a64762870) at /data/src/10.2/sql/sql_table.cc:5121
            #11 0x000055baadffeabd in mysql_execute_command (thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_parse.cc:3966
            #12 0x000055baae00b24a in mysql_parse (thd=0x7f4a10000b00, rawbuf=0x7f4a10012438 "CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED", length=80, parser_state=0x7f4a64763200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7875
            #13 0x000055baadff8efb in dispatch_command (command=COM_QUERY, thd=0x7f4a10000b00, packet=0x7f4a1013ea71 "CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED", packet_length=80, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1812
            #14 0x000055baadff7875 in do_command (thd=0x7f4a10000b00) at /data/src/10.2/sql/sql_parse.cc:1360
            #15 0x000055baae144ae1 in do_handle_one_connection (connect=0x55bab2530340) at /data/src/10.2/sql/sql_connect.cc:1354
            #16 0x000055baae14486e in handle_one_connection (arg=0x55bab2530340) at /data/src/10.2/sql/sql_connect.cc:1260
            #17 0x000055baae561616 in pfs_spawn_thread (arg=0x55bab253a8b0) at /data/src/10.2/storage/perfschema/pfs.cc:1862
            #18 0x00007f4a75a4e494 in start_thread (arg=0x7f4a64764700) at pthread_create.c:333
            #19 0x00007f4a73bc693f in clone () from /lib/x86_64-linux-gnu/libc.so.6
            {noformat}

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

            CREATE TEMPORARY TABLE t1 (a INT) ENGINE=InnoDB;
            CREATE TEMPORARY TABLE t2 (b INT, c INT) ENGINE=InnoDB ROW_FORMAT=COMPACT;
            LOCK TABLE t2 WRITE;
            ALTER TABLE t2 DROP COLUMN c;
            CREATE OR REPLACE TEMPORARY TABLE t1 (d INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
            {code}

            Reproducible on older 10.2 builds too.
            First noticed some time around MDEV-10813 development.
            No visible problems on non-debug builds.
            Summary [Draft] [bb-10.2-mdev10813] Assertion `thd->transaction.stmt.is_empty()' failed in Locked_tables_list::unlock_locked_tables(THD*) Assertion `thd->transaction.stmt.is_empty()' failed in Locked_tables_list::unlock_locked_tables
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -
            Priority Major [ 3 ] Critical [ 2 ]
            serg Sergei Golubchik made changes -
            Sprint 10.2.12 [ 216 ]
            svoj Sergey Vojtovich made changes -
            Status Open [ 1 ] Confirmed [ 10101 ]
            svoj Sergey Vojtovich made changes -
            Assignee Sergey Vojtovich [ svoj ] Sergei Golubchik [ serg ]
            Status Confirmed [ 10101 ] In Review [ 10002 ]
            serg Sergei Golubchik made changes -
            Assignee Sergei Golubchik [ serg ] Sergey Vojtovich [ svoj ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            serg Sergei Golubchik made changes -
            Sprint 10.2.12 [ 216 ] 10.2.12, 10.2.14 [ 216, 229 ]
            svoj Sergey Vojtovich made changes -
            Assignee Sergey Vojtovich [ svoj ] Oleksandr Byelkin [ sanja ]
            sanja Oleksandr Byelkin made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            elenst Elena Stepanova made changes -
            Labels affects-tests
            sanja Oleksandr Byelkin made changes -
            Status In Progress [ 3 ] Stalled [ 10000 ]
            sanja Oleksandr Byelkin made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            sanja Oleksandr Byelkin made changes -
            Assignee Oleksandr Byelkin [ sanja ] Sergei Golubchik [ serg ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            sanja Oleksandr Byelkin made changes -
            Comment [ 1. Make all types symetric
            2. is_null() (execution) call on fix_fields is a pathway to many crashes and errors (proof) ]
            serg Sergei Golubchik made changes -
            Assignee Sergei Golubchik [ serg ] Oleksandr Byelkin [ sanja ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            sanja Oleksandr Byelkin made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            sanja Oleksandr Byelkin made changes -
            Assignee Oleksandr Byelkin [ sanja ] Sergei Golubchik [ serg ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            serg Sergei Golubchik made changes -
            Assignee Sergei Golubchik [ serg ] Oleksandr Byelkin [ sanja ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            sanja Oleksandr Byelkin made changes -
            Fix Version/s 10.2.16 [ 23110 ]
            Fix Version/s 10.3.8 [ 23113 ]
            Fix Version/s 10.2 [ 14601 ]
            Resolution Fixed [ 1 ]
            Status Stalled [ 10000 ] Closed [ 6 ]
            svoj Sergey Vojtovich made changes -
            svoj Sergey Vojtovich made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 77856 ] MariaDB v4 [ 151078 ]

            People

              sanja Oleksandr Byelkin
              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.