[MDEV-22358] Assertion `srv_undo_sources || trx->undo_no == 0 || (!purge_sys.enabled() && (srv_is_being_started || trx_rollback_is_active || srv_force_recovery >= SRV_FORCE_NO_BACKGROUND)) <...>' failed in trx_purge_add_undo_to_history Created: 2020-04-23  Updated: 2020-04-23  Resolved: 2020-04-23

Status: Closed
Project: MariaDB Server
Component/s: Full-text Search, Storage Engine - InnoDB
Affects Version/s: 10.2, 10.3, 10.4, 10.5
Fix Version/s: 10.2.32, 10.3.23, 10.4.13, 10.5.3

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None


 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (a INT, b TEXT, FULLTEXT KEY ftidx (b)) ENGINE=InnoDB;
ALTER TABLE t1 DROP KEY ftidx;
INSERT INTO t1 (a) VALUES (2),(2);
--error ER_DUP_ENTRY
ALTER TABLE t1 ADD UNIQUE KEY uidx (a), ADD FULLTEXT KEY ftidx (b);
 
--source include/restart_mysqld.inc
 
# Cleanup
DROP TABLE t1;

10.4 88cf6f1c

2020-04-23 19:19:30 0 [Note] InnoDB: FTS optimize thread exiting.
2020-04-23 19:19:30 0 [Note] Event Scheduler: Purging the queue. 0 events
mysqld: /data/src/10.4/storage/innobase/trx/trx0purge.cc:269: void trx_purge_add_undo_to_history(const trx_t*, trx_undo_t*&, mtr_t*): Assertion `srv_undo_sources || trx->undo_no == 0 || (!purge_sys.enabled() && (srv_is_being_started || trx_rollback_is_active || srv_force_recovery >= SRV_FORCE_NO_BACKGROUND)) || ((trx->mysql_thd || trx->internal) && srv_fast_shutdown)' failed.
200423 19:19:30 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f02471c1102 in __GI___assert_fail (assertion=0x55769dbcb6c0 "srv_undo_sources || trx->undo_no == 0 || (!purge_sys.enabled() && (srv_is_being_started || trx_rollback_is_active || srv_force_recovery >= SRV_FORCE_NO_BACKGROUND)) || ((trx->mysql_thd || trx->interna"..., file=0x55769dbcaf60 "/data/src/10.4/storage/innobase/trx/trx0purge.cc", line=269, function=0x55769dbce2a0 <trx_purge_add_undo_to_history(trx_t const*, trx_undo_t*&, mtr_t*)::__PRETTY_FUNCTION__> "void trx_purge_add_undo_to_history(const trx_t*, trx_undo_t*&, mtr_t*)") at assert.c:101
#8  0x000055769c98b967 in trx_purge_add_undo_to_history (trx=0x7f023df22930, undo=@0x7f023df23950: 0x61200000a6c0, mtr=0x7ffcae14db70) at /data/src/10.4/storage/innobase/trx/trx0purge.cc:269
#9  0x000055769c9e2e1a in trx_write_serialisation_history (trx=0x7f023df22930, mtr=0x7ffcae14db70) at /data/src/10.4/storage/innobase/trx/trx0trx.cc:1133
#10 0x000055769c9e7418 in trx_commit_low (trx=0x7f023df22930, mtr=0x7ffcae14db70) at /data/src/10.4/storage/innobase/trx/trx0trx.cc:1572
#11 0x000055769c9e760d in trx_commit (trx=0x7f023df22930) at /data/src/10.4/storage/innobase/trx/trx0trx.cc:1640
#12 0x000055769c9e8074 in trx_commit_for_mysql (trx=0x7f023df22930) at /data/src/10.4/storage/innobase/trx/trx0trx.cc:1786
#13 0x000055769cb761b1 in dict_table_try_drop_aborted (table=0x6190000ee808, table_id=20, ref_count=0) at /data/src/10.4/storage/innobase/dict/dict0dict.cc:276
#14 0x000055769cb76812 in dict_table_close (table=0x6190000ee808, dict_locked=0, try_drop=1) at /data/src/10.4/storage/innobase/dict/dict0dict.cc:362
#15 0x000055769c8465cd in row_prebuilt_free (prebuilt=0x620000040108, dict_locked=0) at /data/src/10.4/storage/innobase/row/row0mysql.cc:1042
#16 0x000055769c4f6675 in ha_innobase::close (this=0x61d00027d910) at /data/src/10.4/storage/innobase/handler/ha_innodb.cc:6490
#17 0x000055769bf64d43 in handler::ha_close (this=0x61d00027d910) at /data/src/10.4/sql/handler.cc:2820
#18 0x000055769ba9126d in closefrm (table=0x62000003f0f0) at /data/src/10.4/sql/table.cc:4053
#19 0x000055769bda1021 in intern_close_table (table=0x62000003f0f0) at /data/src/10.4/sql/table_cache.cc:221
#20 0x000055769bda170e in tc_purge (mark_flushed=true) at /data/src/10.4/sql/table_cache.cc:334
#21 0x000055769b600d8a in purge_tables (purge_flag=true) at /data/src/10.4/sql/sql_base.cc:335
#22 0x000055769bda4368 in tdc_start_shutdown () at /data/src/10.4/sql/table_cache.cc:657
#23 0x000055769b4ab522 in clean_up (print_message=true) at /data/src/10.4/sql/mysqld.cc:1984
#24 0x000055769b4ba4f8 in mysqld_main (argc=<error reading variable: Cannot access memory at address 0x3d40>, argv=<error reading variable: Cannot access memory at address 0x3d80>) at /data/src/10.4/sql/mysqld.cc:5922
#25 0x000055769b4a1595 in main (argc=23, argv=0x7ffcae14e908) at /data/src/10.4/sql/main.cc:25

Not reproducible on 10.1.
No obvious effect on a non-debug build.


Generated at Thu Feb 08 09:14:07 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.