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

Failing assertion: error == DB_SUCCESS || error == DB_DUPLICATE_KEY OR Assertion `error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT' failed IN trx_t::commit_low

Details

    Description

      SET GLOBAL innodb_trx_rseg_n_slots_debug=1;
      CREATE TABLE t (b TEXT, FULLTEXT (b)) ENGINE=InnoDB;
      INSERT INTO t VALUES ('a');
      DELETE FROM t;
      

      Leads to:

      10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)

      InnoDB: Failing assertion: error == DB_SUCCESS || error == DB_DUPLICATE_KEY
      

      10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)

      Core was generated by `/test/MD010121-mariadb-10.6.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6)
          at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
      [Current thread is 1 (Thread 0x14a6c45fa700 (LWP 385562))]
      (gdb) bt
      #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
      #1  0x000055c4d86a60d7 in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424
      #2  0x000055c4d7e3aab1 in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:330
      #3  <signal handler called>
      #4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #5  0x000014a6d946c859 in __GI_abort () at abort.c:79
      #6  0x000055c4d848578f in ut_dbg_assertion_failed (expr=expr@entry=0x55c4d8ab3130 "error == DB_SUCCESS || error == DB_DUPLICATE_KEY", file=file@entry=0x55c4d8ab2860 "/test/10.6_dbg/storage/innobase/trx/trx0trx.cc", line=line@entry=1513) at /test/10.6_dbg/storage/innobase/ut/ut0dbg.cc:60
      #7  0x000055c4d84712ac in trx_t::commit_low (this=this@entry=0x14a6d82c3260, mtr=0x14a6c45f7d40) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1513
      #8  0x000055c4d8471546 in trx_t::commit (this=this@entry=0x14a6d82c3260) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1560
      #9  0x000055c4d84718ee in trx_commit_for_mysql (trx=trx@entry=0x14a6d82c3260) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1692
      #10 0x000055c4d8232253 in innobase_commit_low (trx=trx@entry=0x14a6d82c3260) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:3802
      #11 0x000055c4d82322cd in innobase_commit_ordered_2 (trx=trx@entry=0x14a6d82c3260, thd=thd@entry=0x14a688000db8) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:3908
      #12 0x000055c4d823260d in innobase_commit (hton=<optimized out>, thd=0x14a688000db8, commit_trx=<optimized out>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4012
      #13 0x000055c4d7e3cb6f in commit_one_phase_2 (thd=thd@entry=0x14a688000db8, all=all@entry=false, trans=trans@entry=0x14a688004568, is_real_trans=is_real_trans@entry=true) at /test/10.6_dbg/sql/handler.cc:1941
      #14 0x000055c4d7e3fe01 in ha_commit_one_phase (thd=thd@entry=0x14a688000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1920
      #15 0x000055c4d7e5486d in ha_commit_trans (thd=thd@entry=0x14a688000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1714
      #16 0x000055c4d7ce59c3 in trans_commit_stmt (thd=thd@entry=0x14a688000db8) at /test/10.6_dbg/sql/transaction.cc:472
      #17 0x000055c4d7b7be79 in mysql_execute_command (thd=thd@entry=0x14a688000db8) at /test/10.6_dbg/sql/sql_parse.cc:5918
      #18 0x000055c4d7b62072 in mysql_parse (thd=thd@entry=0x14a688000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14a6c45f93d0) at /test/10.6_dbg/sql/sql_parse.cc:7881
      #19 0x000055c4d7b701ec in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14a688000db8, packet=packet@entry=0x14a688008d39 "DELETE FROM t", packet_length=packet_length@entry=13) at /test/10.6_dbg/sql/sql_class.h:1293
      #20 0x000055c4d7b7352d in do_command (thd=0x14a688000db8) at /test/10.6_dbg/sql/sql_parse.cc:1348
      #21 0x000055c4d7ccf7fc in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55c4db3b09a8, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
      #22 0x000055c4d7ccff03 in handle_one_connection (arg=arg@entry=0x55c4db3b09a8) at /test/10.6_dbg/sql/sql_connect.cc:1312
      #23 0x000055c4d818588f in pfs_spawn_thread (arg=0x55c4db2d8898) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
      #24 0x000014a6d997a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #25 0x000014a6d9569293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      Bug confirmed present in:
      MariaDB: 10.5.9 (dbg), 10.6.0 (dbg)

      Bug (or feature/syntax) confirmed not present in:
      MariaDB: 10.2.37 (dbg), 10.2.37 (opt), 10.3.28 (dbg), 10.3.28 (opt), 10.4.18 (dbg), 10.4.18 (opt), 10.5.9 (opt), 10.6.0 (opt)
      MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.50 (dbg), 5.6.50 (opt), 5.7.32 (dbg), 5.7.32 (opt), 8.0.22 (dbg), 8.0.22 (opt)

      10.4 (debug) gives:

      10.4.18 3454b5cf35a61e8f6cfab376638520dee4a50609 (Debug)

      10.4.18>SET GLOBAL innodb_trx_rseg_n_slots_debug=1;
      Query OK, 0 rows affected (0.000 sec)
      10.4.18>CREATE TABLE t (b TEXT, FULLTEXT (b)) ENGINE=InnoDB;
      Query OK, 0 rows affected (0.080 sec)
      10.4.18>INSERT INTO t VALUES ('a');
      Query OK, 1 row affected (0.008 sec)
      10.4.18>DELETE FROM t;
      Query OK, 1 row affected (0.010 sec)
      10.4.18>
      

      Attachments

        Issue Links

          Activity

            marko The assert has changed for this testcase in 10.6:

            10.6.2 6c39eaeb126328e7813b146ecf652d51e4508981 (Debug)

            mysqld: /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1471: void trx_t::commit_low(mtr_t*): Assertion `error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT' failed.
            

            10.6.2 6c39eaeb126328e7813b146ecf652d51e4508981 (Debug)

            Core was generated by `/test/MD120621-mariadb-10.6.2-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
            Program terminated with signal SIGABRT, Aborted.
            #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
            [Current thread is 1 (Thread 0x145b78053700 (LWP 43485))]
            (gdb) bt
            #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
            #1  0x0000145b8e0d9859 in __GI_abort () at abort.c:79
            #2  0x0000145b8e0d9729 in __assert_fail_base (fmt=0x145b8e26f588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x561cf46932b0 "error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT", file=0x561cf4692a68 "/test/10.6_dbg/storage/innobase/trx/trx0trx.cc", line=1471, function=<optimized out>) at assert.c:92
            #3  0x0000145b8e0eaf36 in __GI___assert_fail (assertion=assertion@entry=0x561cf46932b0 "error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT", file=file@entry=0x561cf4692a68 "/test/10.6_dbg/storage/innobase/trx/trx0trx.cc", line=line@entry=1471, function=function@entry=0x561cf4693260 "void trx_t::commit_low(mtr_t*)") at assert.c:101
            #4  0x0000561cf4045976 in trx_t::commit_low (this=this@entry=0x145b794ed160, mtr=0x145b78050d80) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1471
            #5  0x0000561cf4045c9b in trx_t::commit_persist (this=this@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1518
            #6  0x0000561cf4045e6d in trx_t::commit (this=this@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1524
            #7  0x0000561cf40460a9 in trx_commit_for_mysql (trx=trx@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1640
            #8  0x0000561cf3e037af in innobase_commit_low (trx=trx@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4146
            #9  0x0000561cf3e03830 in innobase_commit_ordered_2 (trx=trx@entry=0x145b794ed160, thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4252
            #10 0x0000561cf3e03b70 in innobase_commit (hton=<optimized out>, thd=0x145b48000db8, commit_trx=<optimized out>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4356
            #11 0x0000561cf3a1d91d in commit_one_phase_2 (thd=thd@entry=0x145b48000db8, all=all@entry=false, trans=trans@entry=0x145b48004718, is_real_trans=is_real_trans@entry=true) at /test/10.6_dbg/sql/handler.cc:2041
            #12 0x0000561cf3a1dc35 in ha_commit_one_phase (thd=thd@entry=0x145b48000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1994
            #13 0x0000561cf3a31ec6 in ha_commit_trans (thd=thd@entry=0x145b48000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1788
            #14 0x0000561cf38bf40a in trans_commit_stmt (thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/sql/transaction.cc:472
            #15 0x0000561cf374cb97 in mysql_execute_command (thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/sql/sql_parse.cc:6043
            #16 0x0000561cf3732890 in mysql_parse (thd=thd@entry=0x145b48000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x145b78052400) at /test/10.6_dbg/sql/sql_parse.cc:8016
            #17 0x0000561cf37413fa in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x145b48000db8, packet=packet@entry=0x145b4800b769 "DELETE FROM t", packet_length=packet_length@entry=13, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1340
            #18 0x0000561cf37447da in do_command (thd=0x145b48000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1406
            #19 0x0000561cf38a8c8e in do_handle_one_connection (connect=<optimized out>, connect@entry=0x561cf6ff1448, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
            #20 0x0000561cf38a9293 in handle_one_connection (arg=arg@entry=0x561cf6ff1448) at /test/10.6_dbg/sql/sql_connect.cc:1312
            #21 0x0000561cf3d57166 in pfs_spawn_thread (arg=0x561cf6eda0a8) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
            #22 0x0000145b8e5e7609 in start_thread (arg=<optimized out>) at pthread_create.c:477
            #23 0x0000145b8e1d6293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
            

            Roel Roel Van de Paar added a comment - marko The assert has changed for this testcase in 10.6: 10.6.2 6c39eaeb126328e7813b146ecf652d51e4508981 (Debug) mysqld: /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1471: void trx_t::commit_low(mtr_t*): Assertion `error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT' failed. 10.6.2 6c39eaeb126328e7813b146ecf652d51e4508981 (Debug) Core was generated by `/test/MD120621-mariadb-10.6.2-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'. Program terminated with signal SIGABRT, Aborted. #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 [Current thread is 1 (Thread 0x145b78053700 (LWP 43485))] (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x0000145b8e0d9859 in __GI_abort () at abort.c:79 #2 0x0000145b8e0d9729 in __assert_fail_base (fmt=0x145b8e26f588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x561cf46932b0 "error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT", file=0x561cf4692a68 "/test/10.6_dbg/storage/innobase/trx/trx0trx.cc", line=1471, function=<optimized out>) at assert.c:92 #3 0x0000145b8e0eaf36 in __GI___assert_fail (assertion=assertion@entry=0x561cf46932b0 "error == DB_DUPLICATE_KEY || error == DB_LOCK_WAIT_TIMEOUT", file=file@entry=0x561cf4692a68 "/test/10.6_dbg/storage/innobase/trx/trx0trx.cc", line=line@entry=1471, function=function@entry=0x561cf4693260 "void trx_t::commit_low(mtr_t*)") at assert.c:101 #4 0x0000561cf4045976 in trx_t::commit_low (this=this@entry=0x145b794ed160, mtr=0x145b78050d80) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1471 #5 0x0000561cf4045c9b in trx_t::commit_persist (this=this@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1518 #6 0x0000561cf4045e6d in trx_t::commit (this=this@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1524 #7 0x0000561cf40460a9 in trx_commit_for_mysql (trx=trx@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/trx/trx0trx.cc:1640 #8 0x0000561cf3e037af in innobase_commit_low (trx=trx@entry=0x145b794ed160) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4146 #9 0x0000561cf3e03830 in innobase_commit_ordered_2 (trx=trx@entry=0x145b794ed160, thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4252 #10 0x0000561cf3e03b70 in innobase_commit (hton=<optimized out>, thd=0x145b48000db8, commit_trx=<optimized out>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:4356 #11 0x0000561cf3a1d91d in commit_one_phase_2 (thd=thd@entry=0x145b48000db8, all=all@entry=false, trans=trans@entry=0x145b48004718, is_real_trans=is_real_trans@entry=true) at /test/10.6_dbg/sql/handler.cc:2041 #12 0x0000561cf3a1dc35 in ha_commit_one_phase (thd=thd@entry=0x145b48000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1994 #13 0x0000561cf3a31ec6 in ha_commit_trans (thd=thd@entry=0x145b48000db8, all=all@entry=false) at /test/10.6_dbg/sql/handler.cc:1788 #14 0x0000561cf38bf40a in trans_commit_stmt (thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/sql/transaction.cc:472 #15 0x0000561cf374cb97 in mysql_execute_command (thd=thd@entry=0x145b48000db8) at /test/10.6_dbg/sql/sql_parse.cc:6043 #16 0x0000561cf3732890 in mysql_parse (thd=thd@entry=0x145b48000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x145b78052400) at /test/10.6_dbg/sql/sql_parse.cc:8016 #17 0x0000561cf37413fa in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x145b48000db8, packet=packet@entry=0x145b4800b769 "DELETE FROM t", packet_length=packet_length@entry=13, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1340 #18 0x0000561cf37447da in do_command (thd=0x145b48000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1406 #19 0x0000561cf38a8c8e in do_handle_one_connection (connect=<optimized out>, connect@entry=0x561cf6ff1448, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410 #20 0x0000561cf38a9293 in handle_one_connection (arg=arg@entry=0x561cf6ff1448) at /test/10.6_dbg/sql/sql_connect.cc:1312 #21 0x0000561cf3d57166 in pfs_spawn_thread (arg=0x561cf6eda0a8) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201 #22 0x0000145b8e5e7609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #23 0x0000145b8e1d6293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

            I stated in a comment in MDEV-24088 that the function fts_commit() is broken by design and needs to be removed from the transaction commit. Maybe it is easiest to perform those steps during the normal transaction processing.

            marko Marko Mäkelä added a comment - I stated in a comment in MDEV-24088 that the function fts_commit() is broken by design and needs to be removed from the transaction commit. Maybe it is easiest to perform those steps during the normal transaction processing.

            Please also try any bug fixes with this UPDATE test case:

            SET GLOBAL innodb_trx_rseg_n_slots_debug=1;
            CREATE TABLE t (a TEXT,FULLTEXT (a));
            INSERT INTO t VALUES (0xA8ED);
            UPDATE t SET a=9;
            

            Roel Roel Van de Paar added a comment - Please also try any bug fixes with this UPDATE test case: SET GLOBAL innodb_trx_rseg_n_slots_debug=1; CREATE TABLE t (a TEXT,FULLTEXT (a)); INSERT INTO t VALUES (0xA8ED); UPDATE t SET a=9;

            People

              thiru Thirunarayanan Balathandayuthapani
              Roel Roel Van de Paar
              Votes:
              1 Vote for this issue
              Watchers:
              6 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.