[MDEV-25426] Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed in Diagnostics_area::set_ok_status from my_ok from multi_delete::send_eof Created: 2021-04-15  Updated: 2023-11-28

Status: Confirmed
Project: MariaDB Server
Component/s: Binary Protocol
Affects Version/s: 10.2, 10.3, 10.4, 10.5, 10.6
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0

Type: Bug Priority: Major
Reporter: Roel Van de Paar Assignee: Rucha Deodhar
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Lightly sporadic, repeat until crashes (usually ~2 attempts).
Apologies for the longer text strings, but attempts are replacing it with a REPEAT('a',...) or simplifying them failed.

# mysqld options required for replay: --log-bin 
DROP DATABASE test;
CREATE DATABASE test;
USE test;
SET @@SESSION.sql_mode='',@@GLOBAL.binlog_cache_size=256,@@GLOBAL.max_binlog_cache_size=18;
CREATE TABLE t(c BLOB,c2 INT,c3 DATE,KEY (c(1))) ENGINE=InnoDB;
CREATE TEMPORARY TABLE t(c INT,c2 INT,c3 INT,KEY (c)) ENGINE=InnoDB;
CREATE TABLE t2(c DECIMAL(1),c2 YEAR,c3 BLOB) ENGINE=MyISAM;
SET @@GLOBAL.server_id=1;
XA START 'xid2';
INSERT INTO t2 VALUES('(QsMfc=^+N$=}t)nN8yC1wtrus_=X0q95en*rKi$-c2:8w&bh=VPpucn/&(FXO?F=c=/cwoDQ;#[:+V6N]_jw]Uk-,UF1=Ugb9q,zXOdviGa@9?xc:A','゚・✿ヾ╲(。◕‿◕。)╱✿・゚','#5i4=_@/X@^OfQgA"/bVL$p}=efKLIV{;H:p=iy0uN(=F8*[$#f)?qIbT6/]P*=@-s%WK=).,tH=A(;{cw@DcqyCiUu}E=:cA)v.c00OGc-GM,"P;o/t.Q;{ig%0)?Z$%qzLwO=),[1GDj;=(lSSmj3z{;r=r4=B+^Fdi;2K~Pq{@p46TnSNc4dIfiG]L&lW1K/:%n2lb;=+qYIUVt_w=-ae1N_Ke6~@}NWu"$6Pf{a22V"#Z$JRG1"qoNC${*S{Vt_ccvw([M+/S$xvSX}f)xSE=pJPemhngTv/Co1~:Oi:gHW9.5?G=)/*hQa=$uzgts7O;SvwI~EVtQ+-fw,]o;lShZHjG[AW5KVZiF[Ei)Cp3:~NRiPMVYjOk/UZYq4;$1jivN)BfgOHMfQquCzc0+%*tcD=_{A-a1#Qy3GMmNwc=~,$;ie[b=*{R@=#-(/%$r=O)01j=F1(V@Y$^ouupsApL~om?e~^gklTMl{("OgjRH6wSc$L~W+S;YtPG?Tdhxp;xZHJG=*%r+KnDnA)ps0_T9"7=ZP#=Ok)+t(meE.G;Wm::zuJ_0$rmH-yng*Y.}7gJYg*Vp=2+Vt~Nw5@=fEMwL_J^bOOz4&95bo)#=f"E;69x]R=qpJJt9=W[f8%FogGC=EO"vkdb6j');
INSERT INTO t SELECT * FROM t2;
SET @@SESSION.collation_connection=utf32_german2_ci;
INSERT INTO t VALUES('sk,fbr0/$g+Gn~BUkSCkx0+g=,2X=,^,cl~lcn=&[tqBOTHUTStz^j^-dn?=ud{/lR,LHtk,RN*(^4lKIDo=n^ONlBt$),=z60drS_20Js(_&A6ki?xyp;=d3a@RRyrH=eyTZoU=?uWMdp-yLas=Gg:+rH=%dH=VkfYyBw7K0/Tqa=R~dt=fW7#9=b3k_V:CA7sb98R=TtR=Y~lZ[pM["g=]JALi:$u/APg11*cp9Qcy_nT;G[Tg-c]7U{={)C=-eCia2=gQi.=:0KZnrqRJp8dUO~Rf@~$G=XU{ipdNs_]#PM+v*OdP{)"qW*lSE]=g06jc}Jaack4k,-s4iL~kHs#[Wz[WVN7X)H*I)TCIOXfax[#"gx?pRaqYQw_.:Vlm=b,+_-V3bccpQ?Plj3LiJxS]~oISRrW;G"*m27YhdHoyCl+~ZXi[v8ExpaD#=V=4huwy=Qoa#Jx={ItJo2dtT5+=Vs=35OHa:52=SI]6nWCLXzF3SPf}q"d%Un-iEzAm+v$pGh5*x0eum=H{&ws+T#KJy_Xa4Vo~*ARI,yp0lF{R("t=7#vM)?kVWz^qxrFBpH@/Nz,JG${]@dfAeV&dUdDVAI?$3)1iO,?JjxuW%@-DMt$9azV:YV=KugJkSuT?JyH)P47/vo={Wq_7(-No?Bh,9N=djSAYu&A,U^YF=J}:fEdc.mjv(*f*)o0+p[i,cjV^L1W=~h*5MwXlyKS%^=NW~qYt7a1#KA7;5.zTBAZ;*a3.f=U=&Q$:*_%nq~YDWMZcmEe:#IvV$P]:?nUVkoyn;02dR%FqL[4=9=sS6]d@$W{&8.[?{2l1Z$HFchrDr6-q{PdF9:','rn=dF;6ya3Mu#K/]jubOXhHbP)2Dg&X}PchQ^]Mqiqwsw0lF3S/Plks,+7Wi]hstBZ]fHk9olk_t}0-5N[w6J;ax0kg7DGlsxfVV9Ag~62Otvr#~P=a"@?HvLqc}(7t$b}8[dZlK1t(k"_1:GXj+97=-]8nh/]*"ILTGG"W(M=]:=JVy;Wt7slg(G$]~jh^=_^D,cd=_G?-YG:=t(xJ-em*eNW~zKdpBdLXM58=rq7*wa}=Eol9IY?o/{Od=dWR8L+X%@#Qd,hv;nIAO_=KQ1"Hk6:~pp67;reg8L)B+PRe,&z%bdD52kOl$vdLD~HBlslwno?w=s/)vP3/k9~I:&]}EGY=pk7q2O=SpgdBm*3?VwSwu]ZtBR6iX[d1wM@ea90A}A^cskt4#MsiDQ=gO+9p94dhaNN/Sd_Iig:BEW+D"L~zsKKDX9mitVZh?BsyjQ8F8E*="uK=W*wo-GNOP"(KFBS3DGCdnO,]TN-rYO2x%L-VfD,Hx}4R)K$}znE7@w=C@iMPI74kCA3[mCcvP}Zm,J(&7rckpaM6)0-{sM-;?#Kt_kTA{P2O"fsQRAr&8^NA77=?SNH;z=(:_}mMg.}=Ky#B5I^-wo+)&FFKq:c_n$dLqf"%L45KhZ8#@+zC/pZ=g=[D=v,$ha;BwPB+0QbJS.r=U&Y2lw#xMW+=G@a62~=@[;x"3rDRZ8).J*[.gcykBo=^t_rAQ=:Fk*llA=/$^Y.l}mQ;l=djh+F%8+Y{T;sqj[X9R#m-jX8=MrB4b;O3BplWAUl7-*FnY(-dMk.iG8fnE-.~v8&O^jMaKH~:OkhtXoJhtgMOZy_6#0zV0PK;x{@qjiR8:GBa+u{2p&SgI5+jwfN7^~q@9GDd0KTU}IqpFJKmB%QcEYu6gb%7uNO9XfZhkL6NLDT@+I.{tum}jS_&f=:XoyG:m"LhPw(G1ctH2sV:aI;6hfDx80QMhNI6?ownC;4iZsc5/{75NS].T60',CURRENT_TIMESTAMP(1));
DELETE FROM a3,a2 USING t AS a1 JOIN t AS a2 JOIN t2 AS a3;

Leads to:

10.6.0 f74704c7d963ddcd1109843a5861c6bd76409c8d (Debug)

mysqld: /test/10.6_dbg/sql/sql_error.cc:334: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.

10.6.0 f74704c7d963ddcd1109843a5861c6bd76409c8d (Debug)

Core was generated by `/test/MD120421-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 0x15353969a700 (LWP 2439101))]
(gdb) bt
#0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
#1  0x000055d5b3003c9e in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424
#2  0x000055d5b27a2b07 in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:343
#3  <signal handler called>
#4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#5  0x000015355058a859 in __GI_abort () at abort.c:79
#6  0x000015355058a729 in __assert_fail_base (fmt=0x153550720588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55d5b316a3d0 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=0x55d5b316a2b0 "/test/10.6_dbg/sql/sql_error.cc", line=334, function=<optimized out>) at assert.c:92
#7  0x000015355059bf36 in __GI___assert_fail (assertion=assertion@entry=0x55d5b316a3d0 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=file@entry=0x55d5b316a2b0 "/test/10.6_dbg/sql/sql_error.cc", line=line@entry=334, function=function@entry=0x55d5b316a408 "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#8  0x000055d5b24875e5 in Diagnostics_area::set_ok_status (this=0x1534f4006ab8, affected_rows=3, last_insert_id=last_insert_id@entry=0, message=message@entry=0x0) at /test/10.6_dbg/sql/sql_error.h:1017
#9  0x000055d5b299d91d in my_ok (message=0x0, id=0, affected_rows_arg=<optimized out>, thd=<optimized out>) at /test/10.6_dbg/sql/sql_class.h:5486
#10 multi_delete::send_eof (this=0x1534f4017168) at /test/10.6_dbg/sql/sql_delete.cc:1629
#11 0x000055d5b2562c37 in do_select (procedure=<optimized out>, join=0x1534f40171d8) at /test/10.6_dbg/sql/sql_select.cc:20377
#12 JOIN::exec_inner (this=this@entry=0x1534f40171d8) at /test/10.6_dbg/sql/sql_select.cc:4493
#13 0x000055d5b2562f46 in JOIN::exec (this=this@entry=0x1534f40171d8) at /test/10.6_dbg/sql/sql_select.cc:4273
#14 0x000055d5b256101f in mysql_select (thd=thd@entry=0x1534f4000db8, tables=0x1534f4014c20, fields=@0x1534f40058e0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x1534f40170c8, last = 0x1534f40170c8, elements = 1}, <No data fields>}, conds=conds@entry=0x0, og_num=og_num@entry=0, order=order@entry=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2202245794688, result=0x1534f4017168, unit=0x1534f4004f90, select_lex=0x1534f4005790) at /test/10.6_dbg/sql/sql_select.cc:4749
#15 0x000055d5b24e4002 in mysql_execute_command (thd=thd@entry=0x1534f4000db8) at /test/10.6_dbg/sql/sql_parse.cc:4845
#16 0x000055d5b24cda02 in mysql_parse (thd=thd@entry=0x1534f4000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x153539699410) at /test/10.6_dbg/sql/sql_parse.cc:8004
#17 0x000055d5b24dc726 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x1534f4000db8, packet=packet@entry=0x1534f400b489 "DELETE FROM a3,a2 USING t AS a1 JOIN t AS a2 JOIN t2 AS a3", packet_length=packet_length@entry=58, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1331
#18 0x000055d5b24dfac7 in do_command (thd=0x1534f4000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1399
#19 0x000055d5b2639176 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55d5b5e98a08, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
#20 0x000055d5b263977b in handle_one_connection (arg=arg@entry=0x55d5b5e98a08) at /test/10.6_dbg/sql/sql_connect.cc:1312
#21 0x000055d5b2ae7253 in pfs_spawn_thread (arg=0x55d5b5dc93c8) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
#22 0x0000153550a98609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#23 0x0000153550687293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Bug confirmed present in:
MariaDB: 10.2.38 (dbg), 10.3.29 (dbg), 10.4.19 (dbg), 10.5.10 (dbg), 10.6.0 (dbg)

Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.2.38 (opt), 10.3.29 (opt), 10.4.19 (opt), 10.5.10 (opt), 10.6.0 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.33 (dbg), 5.7.33 (opt), 8.0.23 (dbg), 8.0.23 (opt)



 Comments   
Comment by Sergei Golubchik [ 2021-04-19 ]

Roel, I cannot quite understand what's happening here. Is this binary garbage important for the test case, some charset related conversion issue? Is it a case of non-temporary table being shadowed by a temporary table? what has binlog to do with it? What has XA to do it with? Could you, please, help to understand what's going on?

Comment by Roel Van de Paar [ 2021-04-20 ]

OK, Much simplified testcase.

# mysqld options required for replay: --log-bin 
DROP DATABASE test;
CREATE DATABASE test;
USE test;
CREATE TABLE t(c BLOB,c2 INT,c3 DATE,KEY (c(1))) ENGINE=InnoDB;
CREATE TEMPORARY TABLE t(c INT,c2 INT,c3 INT,KEY (c)) ENGINE=InnoDB;
CREATE TABLE t2(c INT,c2 YEAR,c3 INT) ENGINE=MyISAM;
SET @@SESSION.sql_mode='',@@GLOBAL.binlog_cache_size=10,@@GLOBAL.max_binlog_cache_size=10,@@SESSION.collation_connection=utf32_german2_ci,@@GLOBAL.server_id=1;
XA START 'a';
INSERT INTO t2 VALUES(0,0,0);
INSERT INTO t SELECT * FROM t2;
INSERT INTO t VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',0);
DELETE FROM a,b USING t AS a JOIN t2 AS b;

Observations:

  • The issue is charset, or char-length related (note the collation_connection=utf32_german2_ci)
  • Removing, now, a single 'a' from either 'aaa....aaa' strings makes the testcase non-reproducible. The length is very specific.
  • Column configuration simplified, but attempts to bring it two columns failed
  • Testcase generally needs only two executions
  • All other constructs (XA, binlog_cache_size,TEMPORARY table,multi-table delete,sql_mode change) are necessary for reproducibility, mostly for as yet unclear reasons.
  • Changing engine of t2 to InnoDB instead of MyISAM makes the testcase non-reproducible.

Possibly this issue is only loose related to binary logging, with the primary issue being charset (please confirm).

Comment by Sergei Golubchik [ 2021-04-20 ]

What do you get in non-debug builds? There should be an error, what error is it?

Comment by Roel Van de Paar [ 2021-04-20 ]

serg Yes, spot on question! The error seen is:

10.6.0 a3e3225cd3b816d47621e749e21a71b6a864a96a (Optimized)

10.6.0>DELETE FROM a,b USING t AS a JOIN t2 AS b;
ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage

Comment by Sergei Golubchik [ 2021-04-20 ]

Roel, for the future, these assertions in Diagnostics_area always mean there was an error (or something non-ok) that was later ignored in the code (so the code tries to report an "ok" for something that already failed with an error). In non-debug builds you can see the error — and that is the most important information a developer needs for bugs of this kind.

Comment by Roel Van de Paar [ 2021-04-22 ]

serg Noted. Super & thank you.

Comment by Roel Van de Paar [ 2021-04-27 ]

With thanks to elenst.

# mysqld options required for replay: --log-bin 
SET GLOBAL binlog_cache_size=4096, max_binlog_cache_size=4096;
CREATE TABLE t(c TEXT) ENGINE=InnoDB;
CREATE TABLE t2(a INT) ENGINE=MyISAM;
INSERT INTO t VALUES(REPEAT('a',8192));
INSERT INTO t2 VALUES (1);
START TRANSACTION;
DELETE t.*, t2.* FROM t, t2;

Leads to:

10.6.0 a3e3225cd3b816d47621e749e21a71b6a864a96a (Debug)

mysqld: /test/10.6_dbg/sql/sql_error.cc:334: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.

10.6.0 a3e3225cd3b816d47621e749e21a71b6a864a96a (Debug)

Core was generated by `/test/MD150421-mariadb-10.6.0-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 0x151a1c098700 (LWP 3977590))]
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x0000151a1fca1859 in __GI_abort () at abort.c:79
#2  0x0000151a1fca1729 in __assert_fail_base (fmt=0x151a1fe37588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55f12ced6410 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=0x55f12ced62f0 "/test/10.6_dbg/sql/sql_error.cc", line=334, function=<optimized out>) at assert.c:92
#3  0x0000151a1fcb2f36 in __GI___assert_fail (assertion=assertion@entry=0x55f12ced6410 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=file@entry=0x55f12ced62f0 "/test/10.6_dbg/sql/sql_error.cc", line=line@entry=334, function=function@entry=0x55f12ced6448 "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#4  0x000055f12c1f15eb in Diagnostics_area::set_ok_status (this=0x1519c8006ab8, affected_rows=2, last_insert_id=last_insert_id@entry=0, message=message@entry=0x0) at /test/10.6_dbg/sql/sql_error.h:1017
#5  0x000055f12c7080cd in my_ok (message=0x0, id=0, affected_rows_arg=<optimized out>, thd=<optimized out>) at /test/10.6_dbg/sql/sql_class.h:5486
#6  multi_delete::send_eof (this=0x1519c8015ae8) at /test/10.6_dbg/sql/sql_delete.cc:1629
#7  0x000055f12c2cd10b in do_select (procedure=<optimized out>, join=0x1519c8015b58) at /test/10.6_dbg/sql/sql_select.cc:20380
#8  JOIN::exec_inner (this=this@entry=0x1519c8015b58) at /test/10.6_dbg/sql/sql_select.cc:4493
#9  0x000055f12c2cd41a in JOIN::exec (this=this@entry=0x1519c8015b58) at /test/10.6_dbg/sql/sql_select.cc:4273
#10 0x000055f12c2cb4f3 in mysql_select (thd=thd@entry=0x1519c8000db8, tables=0x1519c8014bd0, fields=@0x1519c80058e0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x1519c8015a68, last = 0x1519c8015a68, elements = 1}, <No data fields>}, conds=conds@entry=0x0, og_num=og_num@entry=0, order=order@entry=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2202245794688, result=0x1519c8015ae8, unit=0x1519c8004f90, select_lex=0x1519c8005790) at /test/10.6_dbg/sql/sql_select.cc:4749
#11 0x000055f12c24e1d1 in mysql_execute_command (thd=thd@entry=0x1519c8000db8) at /test/10.6_dbg/sql/sql_parse.cc:4858
#12 0x000055f12c237a06 in mysql_parse (thd=thd@entry=0x1519c8000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x151a1c097410) at /test/10.6_dbg/sql/sql_parse.cc:8017
#13 0x000055f12c2467df in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x1519c8000db8, packet=packet@entry=0x1519c800b489 "DELETE t.*, t2.* FROM t, t2", packet_length=packet_length@entry=27, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1331
#14 0x000055f12c249bd5 in do_command (thd=0x1519c8000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1406
#15 0x000055f12c3a377c in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55f130040558, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
#16 0x000055f12c3a3d81 in handle_one_connection (arg=arg@entry=0x55f130040558) at /test/10.6_dbg/sql/sql_connect.cc:1312
#17 0x000055f12c851a03 in pfs_spawn_thread (arg=0x55f12ff70c58) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
#18 0x0000151a201af609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#19 0x0000151a1fd9e293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

And when the assertion does not show with this testcase, check error log.

Comment by Alice Sherepa [ 2023-08-02 ]

still reproducible:

mariadbd: /11.0/src/sql/sql_error.cc:335: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.
230802 16:35:03 [ERROR] mysqld got signal 6 ;
 
Server version: 11.0.3-MariaDB-debug-log source revision: f2b4972bd4f9d3f0131f156a6cbc3e0317571944
 
sql/sql_error.cc:340(Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*))[0x55d631562343]
sql/sql_class.h:5684(my_ok(THD*, unsigned long long, unsigned long long, char const*))[0x55d631464c4f]
sql/sql_delete.cc:1675(multi_delete::send_eof())[0x55d6315531e8]
sql/sql_select.cc:22945(do_select(JOIN*, Procedure*))[0x55d6317e1235]
sql/sql_select.cc:4924(JOIN::exec_inner())[0x55d63175f0c7]
sql/sql_select.cc:4701(JOIN::exec())[0x55d63175c484]
sql/sql_select.cc:5182(mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x55d631760b80]
sql/sql_parse.cc:4877(mysql_execute_command(THD*, bool))[0x55d631647d5e]
sql/sql_parse.cc:8019(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x55d63165d39a]
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x55d631633381]
sql/sql_parse.cc:1407(do_command(THD*, bool))[0x55d6316300a7]
sql/sql_connect.cc:1416(do_handle_one_connection(CONNECT*, bool))[0x55d631b05d6f]
sql/sql_connect.cc:1320(handle_one_connection)[0x55d631b056cc]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x55d632720b1c]
nptl/pthread_create.c:478(start_thread)[0x7fd112e36609]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7fd112a07133]
 
Query (0x6290001092a8): DELETE t.*, t2.* FROM t, t2

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