[MDEV-16773] Assertion `element->all_tables.is_empty() || remove_type != TDC_RT_REMOVE_ALL' failed in tdc_remove_table Created: 2018-07-18  Updated: 2018-09-10  Resolved: 2018-09-10

Status: Closed
Project: MariaDB Server
Component/s: Locking
Affects Version/s: 10.2, 10.3
Fix Version/s: 10.2.18, 10.3.10

Type: Bug Priority: Critical
Reporter: Elena Stepanova Assignee: Sergey Vojtovich
Resolution: Fixed Votes: 0
Labels: affects-tests

Issue Links:
Relates
relates to MDEV-14894 [Draft] Assorted crashes and assertio... Closed

 Description   

The test case is for reproducing purposes only, don't put it into the regression suite! Create a proper synchronized one instead.
If it's not reproducible, try to increase the $run value inside the test. Running with --repeat is also possible, but use --nocheck-testcases.

--source include/have_perfschema.inc
 
SET GLOBAL table_open_cache= 10;
 
--connect (con1,localhost,root,,test)
 
--let $run= 1000
 
while ($run)
{
  --connection con1
  CREATE TABLE t1 SELECT 1;
 
  --connection default
  UPDATE performance_schema.setup_consumers SET enabled = 'NO';
  UPDATE performance_schema.setup_timers SET timer_name = 'MICROSECOND';
  TRUNCATE TABLE performance_schema.events_waits_current;
  TRUNCATE TABLE performance_schema.file_summary_by_instance;
  --send
    DROP TABLE IF EXISTS t1;
 
  --connection con1
  DROP TABLE IF EXISTS non_existing_table;
 
  --connection default
  --reap
  
  --dec $run
}

10.2 1cc1d0429da

mysqld: /data/src/10.2/sql/table_cache.cc:1128: bool tdc_remove_table(THD*, enum_tdc_remove_table_type, const char*, const char*, bool): Assertion `element->all_tables.is_empty() || remove_type != TDC_RT_REMOVE_ALL' failed.
180718 12:48:58 [ERROR] mysqld got signal 6 ;
 
#7  0x00007fb5bb3c6ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055d5c3faf312 in tdc_remove_table (thd=0x7fb5a4000b00, remove_type=TDC_RT_REMOVE_ALL, db=0x7fb5a4012b60 "test", table_name=0x7fb5a4012518 "t1", kill_delayed_threads=false) at /data/src/10.2/sql/table_cache.cc:1128
#9  0x000055d5c3e815d3 in mysql_rm_table_no_locks (thd=0x7fb5a4000b00, tables=0x7fb5a4012550, if_exists=true, drop_temporary=false, drop_view=false, dont_log_query=false, dont_free_locks=false) at /data/src/10.2/sql/sql_table.cc:2457
#10 0x000055d5c3e808bf in mysql_rm_table (thd=0x7fb5a4000b00, tables=0x7fb5a4012550, if_exists=1 '\001', drop_temporary=0 '\000') at /data/src/10.2/sql/sql_table.cc:2088
#11 0x000055d5c3dc1ef1 in mysql_execute_command (thd=0x7fb5a4000b00) at /data/src/10.2/sql/sql_parse.cc:4756
#12 0x000055d5c3dcbe89 in mysql_parse (thd=0x7fb5a4000b00, rawbuf=0x7fb5a4012478 "DROP TABLE IF EXISTS t1", length=23, parser_state=0x7fb5b56a2200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7995
#13 0x000055d5c3db99ae in dispatch_command (command=COM_QUERY, thd=0x7fb5a4000b00, packet=0x7fb5a4177371 "DROP TABLE IF EXISTS t1", packet_length=23, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1821
#14 0x000055d5c3db8311 in do_command (thd=0x7fb5a4000b00) at /data/src/10.2/sql/sql_parse.cc:1375
#15 0x000055d5c3f095d2 in do_handle_one_connection (connect=0x55d5c725b390) at /data/src/10.2/sql/sql_connect.cc:1335
#16 0x000055d5c3f0935f in handle_one_connection (arg=0x55d5c725b390) at /data/src/10.2/sql/sql_connect.cc:1241
#17 0x000055d5c432b658 in pfs_spawn_thread (arg=0x55d5c7235ed0) at /data/src/10.2/storage/perfschema/pfs.cc:1862
#18 0x00007fb5bd09d494 in start_thread (arg=0x7fb5b56a3700) at pthread_create.c:333
#19 0x00007fb5bb48393f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Reproducible with MyISAM and InnoDB.
Not reproducible on 10.1.



 Comments   
Comment by Sergey Vojtovich [ 2018-09-05 ]

serg, please review fix for this bug: https://github.com/mariadb/server/commit/15c337c9078aa070b73c45b087c24d90480dabcd

Comment by Sergei Golubchik [ 2018-09-10 ]

looks ok, as far as I can see

Generated at Thu Feb 08 08:31:27 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.