[MDEV-32541] Assertion `!(thd->server_status & (1U | 8192U))' failed in MDL_context::release_transactional_locks Created: 2023-10-21  Updated: 2023-10-23  Resolved: 2023-10-23

Status: Closed
Project: MariaDB Server
Component/s: Locking
Affects Version/s: 10.4
Fix Version/s: 10.4.32, 10.5.23, 10.6.16, 10.10.7, 10.11.6, 11.0.4, 11.1.3, 11.2.2

Type: Bug Priority: Blocker
Reporter: Elena Stepanova Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: regression


 Description   

In the testcase below, INSERT INTO s1 used to be failing with ER_LOCK_WAIT_TIMEOUT. Now it doesn't (on a release build), but instead the concurrent SELECT fails with an assertion failure on a debug build.

CREATE SEQUENCE s1;
CREATE SEQUENCE s2;
 
--connect (con1,localhost,root,,)
SET SESSION TRANSACTION READ ONLY;
START TRANSACTION;
 
--connection default
START TRANSACTION;
INSERT INTO s2 VALUES (1, 1, 10000, 100, 1, 1000, 0, 0);
 
--connection con1
SELECT LASTVAL(s1);
--send
  SELECT LASTVAL(s2);
 
--connection default
SET lock_wait_timeout= 1;
#--error ER_LOCK_WAIT_TIMEOUT
INSERT INTO s1 VALUES (1, 1, 10000, 100, 1, 1000, 0, 0);
 
# Cleanup
--connection con1
--error ER_LOCK_DEADLOCK
--reap
--disconnect con1
--connection default
DROP SEQUENCE s1;
DROP SEQUENCE s2;

10.4 7d89dcf1

mysqld: /data/src/10.4/sql/mdl.cc:3105: void MDL_context::release_transactional_locks(THD*): Assertion `!(thd->server_status & (1U | 8192U))' failed.
231021 19:35:43 [ERROR] mysqld got signal 6 ;
 
#9  0x00007f9d51e53df2 in __GI___assert_fail (assertion=0x560016456e00 "!(thd->server_status & (1U | 8192U))", file=0x560016454800 "/data/src/10.4/sql/mdl.cc", line=3105, function=0x560016456da0 "void MDL_context::release_transactional_locks(THD*)") at ./assert/assert.c:101
#10 0x00005600146a8e5e in MDL_context::release_transactional_locks (this=0x62b00008c350, thd=0x62b00008c208) at /data/src/10.4/sql/mdl.cc:3105
#11 0x0000560014063875 in THD::release_transactional_locks (this=0x62b00008c208) at /data/src/10.4/sql/sql_class.h:4699
#12 0x00005600142a284c in mysql_execute_command (thd=0x62b00008c208) at /data/src/10.4/sql/sql_parse.cc:6305
#13 0x00005600142ad5bd in mysql_parse (thd=0x62b00008c208, rawbuf=0x62b000093228 "SELECT LASTVAL(s2)", length=18, parser_state=0x7f9d49e8d860, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:8012
#14 0x000056001428384c in dispatch_command (command=COM_QUERY, thd=0x62b00008c208, packet=0x62900023f209 "SELECT LASTVAL(s2)", packet_length=18, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1857
#15 0x00005600142803bb in do_command (thd=0x62b00008c208) at /data/src/10.4/sql/sql_parse.cc:1378
#16 0x000056001467fee2 in do_handle_one_connection (connect=0x608000000aa8) at /data/src/10.4/sql/sql_connect.cc:1420
#17 0x000056001467f7f9 in handle_one_connection (arg=0x608000000aa8) at /data/src/10.4/sql/sql_connect.cc:1324
#18 0x00005600152f154a in pfs_spawn_thread (arg=0x615000003c88) at /data/src/10.4/storage/perfschema/pfs.cc:1869
#19 0x00007f9d51ea7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#20 0x00007f9d51f285bc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

The failure started happening after this commit in 10.4:

commit f293b2b21149e9085bee8ecdc5ee627233830eb0
Author: Sergei Golubchik
Date:   Mon Oct 16 14:29:12 2023 +0200
 
    cleanup


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