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

Assertion `!table->fts' failed in dict_table_can_be_evicted on SHUTDOWN

    XMLWordPrintable

Details

    Description

      Fairly sporadic (about 1 in 30). Harder to reproduce/loop as it seems to require a shutdown.
      The DROP/CREATE/USE is not strictly necessary (I have seen the issue reproduced without them), but they are here to enable the following test setup:
      start server > run the testcase a number of times > shutdown. Issue produces at the CLI as well as with pquery, so likely it can be coded into MTR relatively easily.

      # mysqld likely options required for replay: --innodb-buffer-pool-size=300M
      DROP DATABASE test;
      CREATE DATABASE test;
      USE test;
      SET sql_mode='';
      ALTER TABLE t1 RENAME TO t2;
      CREATE TABLE t1 (a INT) ENGINE=InnoDB PARTITION BY HASH (a) PARTITIONS 1024;
      INSERT INTO t1 VALUES (1),(3),(5),(7);
      CREATE TABLE q (b TEXT CHARSET latin1, FULLTEXT (b)) ENGINE=InnoDB;
      

      Leads to:

      10.10.0 e1caa4bd5e8b4645944b85d4b603bf9fc9ef6ca4

      mysqld: /test/10.10_dbg/storage/innobase/dict/dict0dict.cc:1250: bool dict_table_can_be_evicted(dict_table_t*): Assertion `!table->fts' failed.
      

      10.10.0 e1caa4bd5e8b4645944b85d4b603bf9fc9ef6ca4

      Core was generated by `/test/aaa/bin/mysqld --no-defaults --core-file --basedir=/test/aaa --tmpdir=/te'.
      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 0x14b93c3fa700 (LWP 2162677))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x000014b9751d8859 in __GI_abort () at abort.c:79
      #2  0x000014b9751d8729 in __assert_fail_base (fmt=0x14b97536e588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x556f38c3d62e "!table->fts", file=0x556f38c3db20 "/test/10.10_dbg/storage/innobase/dict/dict0dict.cc", line=1250, function=<optimized out>) at assert.c:92
      #3  0x000014b9751e9fd6 in __GI___assert_fail (assertion=assertion@entry=0x556f38c3d62e "!table->fts", file=file@entry=0x556f38c3db20 "/test/10.10_dbg/storage/innobase/dict/dict0dict.cc", line=line@entry=1250, function=function@entry=0x556f38c3dc30 "bool dict_table_can_be_evicted(dict_table_t*)") at assert.c:101
      #4  0x0000556f386c749d in dict_table_can_be_evicted (table=table@entry=0x14b8bc6d7010) at /test/10.10_dbg/storage/innobase/dict/dict0dict.cc:1250
      #5  0x0000556f386d2f50 in dict_sys_t::evict_table_LRU (this=0x556f3922a9c0 <dict_sys>, half=half@entry=false) at /test/10.10_dbg/storage/innobase/dict/dict0dict.cc:1357
      #6  0x0000556f385bc2be in srv_master_do_idle_tasks (counter_time=4516005226423) at /test/10.10_dbg/storage/innobase/srv/srv0srv.cc:1402
      #7  srv_master_callback () at /test/10.10_dbg/storage/innobase/srv/srv0srv.cc:1459
      #8  0x0000556f3879a0be in tpool::thread_pool_generic::timer_generic::run (this=0x556f39d5ea20) at /test/10.10_dbg/tpool/tpool_generic.cc:343
      #9  tpool::thread_pool_generic::timer_generic::execute (arg=0x556f39d5ea20) at /test/10.10_dbg/tpool/tpool_generic.cc:363
      #10 0x0000556f3879af57 in tpool::task::execute (this=0x556f39d5ea60) at /test/10.10_dbg/tpool/task.cc:37
      #11 0x0000556f38799bdd in tpool::thread_pool_generic::worker_main (this=0x556f39cab5e0, thread_var=0x556f39cba780) at /test/10.10_dbg/tpool/tpool_generic.cc:580
      #12 0x0000556f38799f14 in std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__t=<optimized out>, __f=<optimized out>) at /usr/include/c++/9/bits/invoke.h:89
      #13 std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__fn=<optimized out>) at /usr/include/c++/9/bits/invoke.h:95
      #14 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::_M_invoke<0ul, 1ul, 2ul> (this=<optimized out>) at /usr/include/c++/9/thread:244
      #15 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator() (this=<optimized out>) at /usr/include/c++/9/thread:251
      #16 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run (this=<optimized out>) at /usr/include/c++/9/thread:195
      #17 0x000014b9755cfde4 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
      #18 0x000014b9756e9609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #19 0x000014b9752d5133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      10.8.4 3fbcd68d77827929b1eb4726b469ff5998142146 (Debug)

      mysqld: /test/10.8_dbg/storage/innobase/dict/dict0dict.cc:1250: bool dict_table_can_be_evicted(dict_table_t*): Assertion `!table->fts' failed.
      

      10.8.4 3fbcd68d77827929b1eb4726b469ff5998142146 (Debug)

      Core was generated by `/test/MD120722-mariadb-10.8.4-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 0x14c7785fb700 (LWP 279126))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x000014c7a73ea859 in __GI_abort () at abort.c:79
      #2  0x000014c7a73ea729 in __assert_fail_base (fmt=0x14c7a7580588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55808968818e "!table->fts", file=0x558089688680 "/test/10.8_dbg/storage/innobase/dict/dict0dict.cc", line=1250, function=<optimized out>) at assert.c:92
      #3  0x000014c7a73fbfd6 in __GI___assert_fail (assertion=assertion@entry=0x55808968818e "!table->fts", file=file@entry=0x558089688680 "/test/10.8_dbg/storage/innobase/dict/dict0dict.cc", line=line@entry=1250, function=function@entry=0x558089688790 "bool dict_table_can_be_evicted(dict_table_t*)") at assert.c:101
      #4  0x000055808911feb5 in dict_table_can_be_evicted (table=table@entry=0x14c6bc8588f0) at /test/10.8_dbg/storage/innobase/dict/dict0dict.cc:1250
      #5  0x000055808912b938 in dict_sys_t::evict_table_LRU (this=0x558089c6cc80 <dict_sys>, half=half@entry=false) at /test/10.8_dbg/storage/innobase/dict/dict0dict.cc:1357
      #6  0x00005580890157e8 in srv_master_do_idle_tasks (counter_time=4517039386066) at /test/10.8_dbg/storage/innobase/srv/srv0srv.cc:1515
      #7  srv_master_callback () at /test/10.8_dbg/storage/innobase/srv/srv0srv.cc:1572
      #8  0x00005580891f28b0 in tpool::thread_pool_generic::timer_generic::run (this=0x55808c57a6a0) at /test/10.8_dbg/tpool/tpool_generic.cc:343
      #9  tpool::thread_pool_generic::timer_generic::execute (arg=0x55808c57a6a0) at /test/10.8_dbg/tpool/tpool_generic.cc:363
      #10 0x00005580891f3749 in tpool::task::execute (this=0x55808c57a6e0) at /test/10.8_dbg/tpool/task.cc:37
      #11 0x00005580891f23cf in tpool::thread_pool_generic::worker_main (this=0x55808c4c7250, thread_var=0x55808c4d6c70) at /test/10.8_dbg/tpool/tpool_generic.cc:580
      #12 0x00005580891f2706 in std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__t=<optimized out>, __f=<optimized out>) at /usr/include/c++/9/bits/invoke.h:89
      #13 std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> (__fn=<optimized out>) at /usr/include/c++/9/bits/invoke.h:95
      #14 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::_M_invoke<0ul, 1ul, 2ul> (this=<optimized out>) at /usr/include/c++/9/thread:244
      #15 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator() (this=<optimized out>) at /usr/include/c++/9/thread:251
      #16 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run (this=<optimized out>) at /usr/include/c++/9/thread:195
      #17 0x000014c7a77e1de4 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
      #18 0x000014c7a78fb609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #19 0x000014c7a74e7133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      It is unclear which versions this exists on. I have been able to reproduce the issue on 10.8 (dbg) and 10.10 (dbg) so far.

      Attachments

        Issue Links

          Activity

            People

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