|
Please check MDEV-20481, MDEV-20159 and MDEV-19298 for possible though unlikely connection.
|
|
Roel,
The first test case doesn't depend on SQL_MODE. It probably did in earlier modifications of the test case, but not in the one that's in the description.
The second test case doesn't seem to work, regardless SQL_MODE, because the first INSERT has a wrong number of values, non-strict SQL_MODE doesn't help to ignore it.
|
|
Thanks! Confirmed both testcases do not require SQL_MODE set. Second testcases crashes (with same assert).
|
10.5.3 364e7a9ae6b5fbf69494cec30733b5ad28738cbb
|
10.5.3>USE test;
|
Database changed
|
10.5.3>CREATE TEMPORARY TABLE t (c INT,c2 INT) ENGINE=InnoDB;
|
Query OK, 0 rows affected (0.002 sec)
|
10.5.3>START TRANSACTION READ ONLY;
|
Query OK, 0 rows affected (0.000 sec)
|
10.5.3>INSERT INTO t VALUES(0);
|
ERROR 1136 (21S01): Column count doesn't match value count at row 1
|
10.5.3>SAVEPOINT s;
|
Query OK, 0 rows affected (0.000 sec)
|
10.5.3>INSERT INTO t VALUES(0,0);
|
ERROR 2013 (HY000): Lost connection to MySQL server during query
|
|
|
Right, the second test case only doesn't work in MTR, as it needs the error masking (--error ER_WRONG_VALUE_COUNT_ON_ROW), it will abort otherwise.
|
|
In fact, on 10.2 both test cases produce a slightly different failure:
|
10.2 2107e3bb
|
mysqld: /data/src/10.2/storage/innobase/include/trx0sys.ic:188: void trx_write_trx_id(byte*, trx_id_t): Assertion `id > 0' failed.
|
200731 2:55:28 [ERROR] mysqld got signal 6 ;
|
|
#7 0x00007f8b41dd6f12 in __GI___assert_fail (assertion=0x55793378d46b "id > 0", file=0x55793378d438 "/data/src/10.2/storage/innobase/include/trx0sys.ic", line=188, function=0x557933791f40 <_ZZL16trx_write_trx_idPhmE19__PRETTY_FUNCTION__> "void trx_write_trx_id(byte*, trx_id_t)") at assert.c:101
|
#8 0x0000557933103db7 in trx_write_trx_id (ptr=0x7f8ae0085cfe "", id=0) at /data/src/10.2/storage/innobase/include/trx0sys.ic:188
|
#9 0x000055793310e88c in row_ins_step (thr=0x7f8ae0085ea0) at /data/src/10.2/storage/innobase/row/row0ins.cc:3619
|
#10 0x000055793312c316 in row_insert_for_mysql (mysql_rec=0x7f8ae0084b90 "\375", prebuilt=0x7f8ae0085770) at /data/src/10.2/storage/innobase/row/row0mysql.cc:1411
|
#11 0x0000557932fed24f in ha_innobase::write_row (this=0x7f8ae0084fe8, record=0x7f8ae0084b90 "\375") at /data/src/10.2/storage/innobase/handler/ha_innodb.cc:8178
|
#12 0x0000557932dfac98 in handler::ha_write_row (this=0x7f8ae0084fe8, buf=0x7f8ae0084b90 "\375") at /data/src/10.2/sql/handler.cc:6108
|
#13 0x0000557932b50731 in write_record (thd=0x7f8ae0000af0, table=0x7f8ae00827c0, info=0x7f8ae0013170) at /data/src/10.2/sql/sql_insert.cc:1941
|
#14 0x0000557932b55c94 in select_insert::send_data (this=0x7f8ae0013130, values=...) at /data/src/10.2/sql/sql_insert.cc:3834
|
#15 0x0000557932be5e24 in end_send (join=0x7f8ae00131d8, join_tab=0x7f8ae00147d8, end_of_records=false) at /data/src/10.2/sql/sql_select.cc:20045
|
#16 0x0000557932be38c3 in evaluate_join_record (join=0x7f8ae00131d8, join_tab=0x7f8ae0014428, error=0) at /data/src/10.2/sql/sql_select.cc:19093
|
#17 0x0000557932be31af in sub_select (join=0x7f8ae00131d8, join_tab=0x7f8ae0014428, end_of_records=false) at /data/src/10.2/sql/sql_select.cc:18873
|
#18 0x0000557932be2736 in do_select (join=0x7f8ae00131d8, procedure=0x0) at /data/src/10.2/sql/sql_select.cc:18417
|
#19 0x0000557932bbc1f7 in JOIN::exec_inner (this=0x7f8ae00131d8) at /data/src/10.2/sql/sql_select.cc:3638
|
#20 0x0000557932bbb6b2 in JOIN::exec (this=0x7f8ae00131d8) at /data/src/10.2/sql/sql_select.cc:3433
|
#21 0x0000557932bbc868 in mysql_select (thd=0x7f8ae0000af0, tables=0x7f8ae0012a98, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3490974464, result=0x7f8ae0013130, unit=0x7f8ae00046e8, select_lex=0x7f8ae0004e28) at /data/src/10.2/sql/sql_select.cc:3833
|
#22 0x0000557932bb0a26 in handle_select (thd=0x7f8ae0000af0, lex=0x7f8ae0004628, result=0x7f8ae0013130, setup_tables_done_option=1073741824) at /data/src/10.2/sql/sql_select.cc:361
|
#23 0x0000557932b7517c in mysql_execute_command (thd=0x7f8ae0000af0) at /data/src/10.2/sql/sql_parse.cc:4275
|
#24 0x0000557932b801a9 in mysql_parse (thd=0x7f8ae0000af0, rawbuf=0x7f8ae0012248 "INSERT INTO t2 SELECT * FROM t", length=30, parser_state=0x7f8b40c8c660, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7733
|
#25 0x0000557932b6e4d5 in dispatch_command (command=COM_QUERY, thd=0x7f8ae0000af0, packet=0x7f8ae0066f41 "INSERT INTO t2 SELECT * FROM t", packet_length=30, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1824
|
#26 0x0000557932b6cf50 in do_command (thd=0x7f8ae0000af0) at /data/src/10.2/sql/sql_parse.cc:1377
|
#27 0x0000557932cc2fd1 in do_handle_one_connection (connect=0x5579360c85d0) at /data/src/10.2/sql/sql_connect.cc:1336
|
#28 0x0000557932cc2d3c in handle_one_connection (arg=0x5579360c85d0) at /data/src/10.2/sql/sql_connect.cc:1241
|
#29 0x00007f8b43d5f4a4 in start_thread (arg=0x7f8b40c8d700) at pthread_create.c:456
|
#30 0x00007f8b41e93d0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
|
And here is an almost identical test case which causes yet another failure on 10.2-10.3 (on 10.4-10.5 it's the same one as in the description):
--source include/have_innodb.inc
|
|
CREATE TEMPORARY TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
INSERT INTO t1 VALUES (1);
|
START TRANSACTION READ ONLY;
|
UPDATE t1 SET a= 2;
|
|
10.2 2107e3bb
|
mysqld: /data/src/10.2/storage/innobase/row/row0upd.cc:554: void row_upd_index_entry_sys_field(dtuple_t*, dict_index_t*, ulint, ib_uint64_t): Assertion `val > 0' failed.
|
200731 2:57:51 [ERROR] mysqld got signal 6 ;
|
|
#7 0x00007f98b6d6cf12 in __GI___assert_fail (assertion=0x55ae223d7451 "val > 0", file=0x55ae223d7380 "/data/src/10.2/storage/innobase/row/row0upd.cc", line=554, function=0x55ae223d8ce0 <row_upd_index_entry_sys_field(dtuple_t*, dict_index_t*, unsigned long, unsigned long)::__PRETTY_FUNCTION__> "void row_upd_index_entry_sys_field(dtuple_t*, dict_index_t*, ulint, ib_uint64_t)") at assert.c:101
|
#8 0x000055ae21d9b32f in row_upd_index_entry_sys_field (entry=0x7f98601834b0, index=0x7f986000a630, type=1, val=0) at /data/src/10.2/storage/innobase/row/row0upd.cc:554
|
#9 0x000055ae21d9ffa5 in row_upd_clust_rec_by_insert (node=0x7f986000c520, index=0x7f986000a630, thr=0x7f986000c7f8, referenced=0, foreign=false, mtr=0x7f98b13bbde0) at /data/src/10.2/storage/innobase/row/row0upd.cc:2709
|
#10 0x000055ae21da178b in row_upd_clust_step (node=0x7f986000c520, thr=0x7f986000c7f8) at /data/src/10.2/storage/innobase/row/row0upd.cc:3216
|
#11 0x000055ae21da1a93 in row_upd (node=0x7f986000c520, thr=0x7f986000c7f8) at /data/src/10.2/storage/innobase/row/row0upd.cc:3292
|
#12 0x000055ae21da1f6a in row_upd_step (thr=0x7f986000c7f8) at /data/src/10.2/storage/innobase/row/row0upd.cc:3438
|
#13 0x000055ae21d4a46f in row_update_for_mysql (prebuilt=0x7f986000baa0) at /data/src/10.2/storage/innobase/row/row0mysql.cc:1825
|
#14 0x000055ae21c0bff3 in ha_innobase::update_row (this=0x7f986000b318, old_row=0x7f986000aec8 "\377\001", new_row=0x7f986000aec0 "\377\002") at /data/src/10.2/storage/innobase/handler/ha_innodb.cc:8957
|
#15 0x000055ae21a17f71 in handler::ha_update_row (this=0x7f986000b318, old_data=0x7f986000aec8 "\377\001", new_data=0x7f986000aec0 "\377\002") at /data/src/10.2/sql/handler.cc:6140
|
#16 0x000055ae218817d0 in mysql_update (thd=0x7f9860000af0, table_list=0x7f9860012530, fields=..., values=..., conds=0x0, order_num=0, order=0x0, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7f98b13bcc80, updated_return=0x7f98b13bcd30) at /data/src/10.2/sql/sql_update.cc:817
|
#17 0x000055ae2179139e in mysql_execute_command (thd=0x7f9860000af0) at /data/src/10.2/sql/sql_parse.cc:4006
|
#18 0x000055ae2179d1a9 in mysql_parse (thd=0x7f9860000af0, rawbuf=0x7f9860012458 "UPDATE t1 SET a= 2", length=18, parser_state=0x7f98b13bd610, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7733
|
#19 0x000055ae2178b4d5 in dispatch_command (command=COM_QUERY, thd=0x7f9860000af0, packet=0x7f9860095ae1 "UPDATE t1 SET a= 2", packet_length=18, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1824
|
#20 0x000055ae21789f50 in do_command (thd=0x7f9860000af0) at /data/src/10.2/sql/sql_parse.cc:1377
|
#21 0x000055ae218dffd1 in do_handle_one_connection (connect=0x55ae24a3b780) at /data/src/10.2/sql/sql_connect.cc:1336
|
#22 0x000055ae218dfd3c in handle_one_connection (arg=0x55ae24a3b780) at /data/src/10.2/sql/sql_connect.cc:1241
|
#23 0x000055ae220f63b6 in pfs_spawn_thread (arg=0x55ae24a19460) at /data/src/10.2/storage/perfschema/pfs.cc:1869
|
#24 0x00007f98b8cf54a4 in start_thread (arg=0x7f98b13be700) at pthread_create.c:456
|
#25 0x00007f98b6e29d0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
|
|
|
Additional interesting testcase
CREATE TEMPORARY TABLE t(c INT) ENGINE=InnoDB;
|
SET SESSION tx_read_only=TRUE;
|
LOCK TABLE test.t READ;
|
SELECT * FROM t;
|
INSERT INTO t VALUES(0xADC3);
|
Leads to:
|
10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)
|
mysqld: /test/10.6_dbg/storage/innobase/include/trx0sys.h:91: void trx_write_trx_id(byte*, trx_id_t): Assertion `id' failed.
|
|
10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)
|
Core was generated by `/test/MD010121-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 0x151318d25700 (LWP 3405998))]
|
(gdb) bt
|
#0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
|
#1 0x0000560e909d60d7 in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424
|
#2 0x0000560e9016aab1 in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:330
|
#3 <signal handler called>
|
#4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#5 0x000015132dbbb859 in __GI_abort () at abort.c:79
|
#6 0x000015132dbbb729 in __assert_fail_base (fmt=0x15132dd51588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x560e90d85d47 "id", file=0x560e90d7a128 "/test/10.6_dbg/storage/innobase/include/trx0sys.h", line=91, function=<optimized out>) at assert.c:92
|
#7 0x000015132dbccf36 in __GI___assert_fail (assertion=assertion@entry=0x560e90d85d47 "id", file=file@entry=0x560e90d7a128 "/test/10.6_dbg/storage/innobase/include/trx0sys.h", line=line@entry=91, function=function@entry=0x560e90d8ec00 "void trx_write_trx_id(byte*, trx_id_t)") at assert.c:101
|
#8 0x0000560e906ca73c in trx_write_trx_id (id=0, db_trx_id=0x1512e802158e "") at /test/10.6_dbg/storage/innobase/include/trx0sys.h:91
|
#9 row_ins_step (thr=thr@entry=0x1512e8021720) at /test/10.6_dbg/storage/innobase/row/row0ins.cc:3697
|
#10 0x0000560e906ef7b7 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x1512e80200e8 "\375í", prebuilt=0x1512e8020da8, ins_mode=ROW_INS_NORMAL) at /test/10.6_dbg/storage/innobase/row/row0mysql.cc:1420
|
#11 0x0000560e90579bef in ha_innobase::write_row (this=0x1512e8020550, record=0x1512e80200e8 "\375í") at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:7366
|
#12 0x0000560e9017ee67 in handler::ha_write_row (this=0x1512e8020550, buf=0x1512e80200e8 "\375í") at /test/10.6_dbg/sql/handler.cc:7144
|
#13 0x0000560e8fe542ea in write_record (thd=thd@entry=0x1512e8000db8, table=table@entry=0x1512e801fc58, info=info@entry=0x151318d23c60, sink=sink@entry=0x0) at /test/10.6_dbg/sql/sql_insert.cc:2104
|
#14 0x0000560e8fe609a5 in mysql_insert (thd=thd@entry=0x1512e8000db8, table_list=0x1512e80127a8, fields=@0x1512e8005e28: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x560e9146f0e0 <end_of_list>, last = 0x1512e8005e28, elements = 0}, <No data fields>}, values_list=@0x1512e8005e70: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x1512e80133b8, last = 0x1512e80133b8, elements = 1}, <No data fields>}, update_fields=@0x1512e8005e58: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x560e9146f0e0 <end_of_list>, last = 0x1512e8005e58, elements = 0}, <No data fields>}, update_values=@0x1512e8005e40: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x560e9146f0e0 <end_of_list>, last = 0x1512e8005e40, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=false, result=0x0) at /test/10.6_dbg/sql/sql_insert.cc:1099
|
#15 0x0000560e8fea762d in mysql_execute_command (thd=thd@entry=0x1512e8000db8) at /test/10.6_dbg/sql/sql_parse.cc:4439
|
#16 0x0000560e8fe92072 in mysql_parse (thd=thd@entry=0x1512e8000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x151318d243d0) at /test/10.6_dbg/sql/sql_parse.cc:7881
|
#17 0x0000560e8fea01ec in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x1512e8000db8, packet=packet@entry=0x1512e8008d39 "INSERT INTO t VALUES(0xADC3)", packet_length=packet_length@entry=28) at /test/10.6_dbg/sql/sql_class.h:1293
|
#18 0x0000560e8fea352d in do_command (thd=0x1512e8000db8) at /test/10.6_dbg/sql/sql_parse.cc:1348
|
#19 0x0000560e8ffff7fc in do_handle_one_connection (connect=<optimized out>, connect@entry=0x560e928ec6f8, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
|
#20 0x0000560e8fffff03 in handle_one_connection (arg=arg@entry=0x560e928ec6f8) at /test/10.6_dbg/sql/sql_connect.cc:1312
|
#21 0x0000560e904b588f in pfs_spawn_thread (arg=0x560e92838898) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
|
#22 0x000015132e0c9609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#23 0x000015132dcb8293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
And slightly different assert on 10.2:
|
10.2.37 (Debug)
|
mysqld: /test/10.2_dbg/storage/innobase/include/trx0sys.ic:188: void trx_write_trx_id(byte*, trx_id_t): Assertion `id > 0' failed.
|
|
10.2.37 (Debug)
|
Core was generated by `/test/MD010121-mariadb-10.2.37-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 0x147678b47700 (LWP 3425892))]
|
(gdb) bt
|
#0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
|
#1 0x000055a2156c4c2a in my_write_core (sig=sig@entry=6) at /test/10.2_dbg/mysys/stacktrace.c:382
|
#2 0x000055a214fb782b in handle_fatal_signal (sig=6) at /test/10.2_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 0x0000147693bd7859 in __GI_abort () at abort.c:79
|
#6 0x0000147693bd7729 in __assert_fail_base (fmt=0x147693d6d588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55a2158e7888 "id > 0", file=0x55a215865038 "/test/10.2_dbg/storage/innobase/include/trx0sys.ic", line=188, function=<optimized out>) at assert.c:92
|
#7 0x0000147693be8f36 in __GI___assert_fail (assertion=assertion@entry=0x55a2158e7888 "id > 0", file=file@entry=0x55a215865038 "/test/10.2_dbg/storage/innobase/include/trx0sys.ic", line=line@entry=188, function=function@entry=0x55a2158a3b00 "void trx_write_trx_id(byte*, trx_id_t)") at assert.c:101
|
#8 0x000055a2152bf845 in trx_write_trx_id (id=<optimized out>, ptr=0x147634021786 "") at /test/10.2_dbg/storage/innobase/row/row0ins.cc:3603
|
#9 row_ins_step (thr=thr@entry=0x147634021928) at /test/10.2_dbg/storage/innobase/row/row0ins.cc:3616
|
#10 0x000055a2152d9da7 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x14763400c3a0 "\375í", prebuilt=0x147634020f70) at /test/10.2_dbg/storage/innobase/row/row0mysql.cc:1411
|
#11 0x000055a2151bb3c5 in ha_innobase::write_row (this=0x1476340207e8, record=0x14763400c3a0 "\375í") at /test/10.2_dbg/storage/innobase/handler/ha_innodb.cc:8179
|
#12 0x000055a214fc5bc6 in handler::ha_write_row (this=0x1476340207e8, buf=0x14763400c3a0 "\375í") at /test/10.2_dbg/sql/handler.cc:6116
|
#13 0x000055a214d8d623 in write_record (thd=thd@entry=0x147634000d90, table=table@entry=0x14763401fbe0, info=info@entry=0x147678b44ce0) at /test/10.2_dbg/sql/sql_insert.cc:1939
|
#14 0x000055a214d98bba in mysql_insert (thd=thd@entry=0x147634000d90, table_list=0x147634011278, fields=@0x1476340056b8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55a215ebfb20 <end_of_list>, last = 0x1476340056b8, elements = 0}, <No data fields>}, values_list=@0x147634005700: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x147634011958, last = 0x147634011958, elements = 1}, <No data fields>}, update_fields=@0x1476340056e8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55a215ebfb20 <end_of_list>, last = 0x1476340056e8, elements = 0}, <No data fields>}, update_values=@0x1476340056d0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55a215ebfb20 <end_of_list>, last = 0x1476340056d0, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=false) at /test/10.2_dbg/sql/sql_insert.cc:1066
|
#15 0x000055a214db1558 in mysql_execute_command (thd=thd@entry=0x147634000d90) at /test/10.2_dbg/sql/sql_parse.cc:4193
|
#16 0x000055a214db7ea0 in mysql_parse (thd=thd@entry=0x147634000d90, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x147678b46550, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.2_dbg/sql/sql_parse.cc:7762
|
#17 0x000055a214dba9d9 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x147634000d90, packet=packet@entry=0x1476340195d1 "INSERT INTO t VALUES(0xADC3)", packet_length=packet_length@entry=28, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.2_dbg/sql/sql_class.h:1096
|
#18 0x000055a214dbd7e1 in do_command (thd=0x147634000d90) at /test/10.2_dbg/sql/sql_parse.cc:1381
|
#19 0x000055a214ec2a61 in do_handle_one_connection (connect=connect@entry=0x55a218116350) at /test/10.2_dbg/sql/sql_connect.cc:1336
|
#20 0x000055a214ec2c8c in handle_one_connection (arg=0x55a218116350) at /test/10.2_dbg/sql/sql_connect.cc:1241
|
#21 0x00001476940dd609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#22 0x0000147693cd4293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.2.37 (dbg), 10.3.28 (dbg), 10.4.18 (dbg), 10.5.9 (dbg), 10.6.0 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.2.37 (opt), 10.3.28 (opt), 10.4.18 (opt), 10.5.9 (opt), 10.6.0 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.50 (dbg), 5.6.50 (opt), 5.7.32 (dbg), 5.7.32 (opt), 8.0.22 (dbg), 8.0.22 (opt)
|
|
Also ran Elena's last testcase against all versions
CREATE TEMPORARY TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
|
INSERT INTO t1 VALUES (1);
|
START TRANSACTION READ ONLY;
|
UPDATE t1 SET a= 2;
|
Leads to:
|
10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)
|
mysqld: /test/10.6_dbg/storage/innobase/include/trx0sys.h:91: void trx_write_trx_id(byte*, trx_id_t): Assertion `id' failed.
|
|
10.6.0 9118fd360a3da0bba521caf2a35c424968235ac4 (Debug)
|
Core was generated by `/test/MD010121-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 0x146f688bd700 (LWP 3638131))]
|
(gdb) bt
|
#0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
|
#1 0x000055c9840750d7 in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424
|
#2 0x000055c983809ab1 in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:330
|
#3 <signal handler called>
|
#4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#5 0x0000146f7e754859 in __GI_abort () at abort.c:79
|
#6 0x0000146f7e754729 in __assert_fail_base (fmt=0x146f7e8ea588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55c984424d47 "id", file=0x55c984419128 "/test/10.6_dbg/storage/innobase/include/trx0sys.h", line=91, function=<optimized out>) at assert.c:92
|
#7 0x0000146f7e765f36 in __GI___assert_fail (assertion=assertion@entry=0x55c984424d47 "id", file=file@entry=0x55c984419128 "/test/10.6_dbg/storage/innobase/include/trx0sys.h", line=line@entry=91, function=function@entry=0x55c98442dc00 "void trx_write_trx_id(byte*, trx_id_t)") at assert.c:101
|
#8 0x000055c983dea985 in trx_write_trx_id (id=0, db_trx_id=0x146f2c01c111 "") at /test/10.6_dbg/storage/innobase/include/trx0sys.h:91
|
#9 row_upd_clust_rec_by_insert (mtr=0x146f688bafd0, foreign=false, referenced=0, thr=0x146f2c021de8, index=0x146f2c01f548, node=0x146f2c021b10) at /test/10.6_dbg/storage/innobase/row/row0upd.cc:2391
|
#10 row_upd_clust_step (node=node@entry=0x146f2c021b10, thr=thr@entry=0x146f2c021de8) at /test/10.6_dbg/storage/innobase/row/row0upd.cc:2913
|
#11 0x000055c983decc3f in row_upd (thr=0x146f2c021de8, node=0x146f2c021b10) at /test/10.6_dbg/storage/innobase/row/row0upd.cc:2992
|
#12 row_upd_step (thr=thr@entry=0x146f2c021de8) at /test/10.6_dbg/storage/innobase/row/row0upd.cc:3136
|
#13 0x000055c983d8f63b in row_update_for_mysql (prebuilt=0x146f2c0210e8) at /test/10.6_dbg/storage/innobase/row/row0mysql.cc:1846
|
#14 0x000055c983c15119 in ha_innobase::update_row (this=0x146f2c020890, old_row=0x146f2c020430 "\377\001", new_row=0x146f2c020428 "\377\002") at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:8146
|
#15 0x000055c98381e48b in handler::ha_update_row (this=0x146f2c020890, old_data=0x146f2c020430 "\377\001", new_data=0x146f2c020428 "\377\002") at /test/10.6_dbg/sql/handler.cc:7197
|
#16 0x000055c98364108f in mysql_update (thd=thd@entry=0x146f2c000db8, table_list=<optimized out>, fields=@0x146f2c0058d0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x146f2c013068, last = 0x146f2c013068, elements = 1}, <No data fields>}, values=@0x146f2c005e40: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x146f2c013078, last = 0x146f2c013078, elements = 1}, <No data fields>}, conds=<optimized out>, order_num=<optimized out>, order=<optimized out>, limit=18446744073709551615, ignore=<optimized out>, found_return=<optimized out>, updated_return=<optimized out>) at /test/10.6_dbg/sql/sql_update.cc:1076
|
#17 0x000055c9835460c1 in mysql_execute_command (thd=thd@entry=0x146f2c000db8) at /test/10.6_dbg/sql/sql_limit.h:67
|
#18 0x000055c983531072 in mysql_parse (thd=thd@entry=0x146f2c000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x146f688bc3d0) at /test/10.6_dbg/sql/sql_parse.cc:7881
|
#19 0x000055c98353f1ec in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x146f2c000db8, packet=packet@entry=0x146f2c008d39 "UPDATE t1 SET a= 2", packet_length=packet_length@entry=18) at /test/10.6_dbg/sql/sql_class.h:1293
|
#20 0x000055c98354252d in do_command (thd=0x146f2c000db8) at /test/10.6_dbg/sql/sql_parse.cc:1348
|
#21 0x000055c98369e7fc in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55c986ff2c48, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
|
#22 0x000055c98369ef03 in handle_one_connection (arg=arg@entry=0x55c986ff2c48) at /test/10.6_dbg/sql/sql_connect.cc:1312
|
#23 0x000055c983b5488f in pfs_spawn_thread (arg=0x55c986f2dcb8) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
|
#24 0x0000146f7ec62609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#25 0x0000146f7e851293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
|
10.2.37 (Debug)
|
mysqld: /test/10.2_dbg/storage/innobase/row/row0upd.cc:554: void row_upd_index_entry_sys_field(dtuple_t*, dict_index_t*, ulint, ib_uint64_t): Assertion `val > 0' failed.
|
|
10.2.37 (Debug)
|
Core was generated by `/test/MD010121-mariadb-10.2.37-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 0x14ef30bdd700 (LWP 3626081))]
|
(gdb) bt
|
#0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
|
#1 0x000056240a12ac2a in my_write_core (sig=sig@entry=6) at /test/10.2_dbg/mysys/stacktrace.c:382
|
#2 0x0000562409a1d82b in handle_fatal_signal (sig=6) at /test/10.2_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 0x000014ef4bc88859 in __GI_abort () at abort.c:79
|
#6 0x000014ef4bc88729 in __assert_fail_base (fmt=0x14ef4be1e588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x56240a370595 "val > 0", file=0x56240a31c078 "/test/10.2_dbg/storage/innobase/row/row0upd.cc", line=554, function=<optimized out>) at assert.c:92
|
#7 0x000014ef4bc99f36 in __GI___assert_fail (assertion=assertion@entry=0x56240a370595 "val > 0", file=file@entry=0x56240a31c078 "/test/10.2_dbg/storage/innobase/row/row0upd.cc", line=line@entry=554, function=function@entry=0x56240a31c378 "void row_upd_index_entry_sys_field(dtuple_t*, dict_index_t*, ulint, ib_uint64_t)") at assert.c:101
|
#8 0x0000562409d8b341 in row_upd_index_entry_sys_field (entry=entry@entry=0x14eeec032340, index=index@entry=0x14eeec01f2a0, type=type@entry=1, val=0) at /test/10.2_dbg/storage/innobase/include/mach0data.ic:166
|
#9 0x0000562409d94439 in row_upd_clust_rec_by_insert (mtr=0x14ef30bda070, foreign=<optimized out>, referenced=0, thr=0x14eeec021ee8, index=0x14eeec01f2a0, node=0x14eeec021c10) at /test/10.2_dbg/storage/innobase/row/row0upd.cc:2697
|
#10 row_upd_clust_step (node=node@entry=0x14eeec021c10, thr=thr@entry=0x14eeec021ee8) at /test/10.2_dbg/storage/innobase/row/row0upd.cc:3210
|
#11 0x0000562409d968c6 in row_upd (thr=0x14eeec021ee8, node=0x14eeec021c10) at /test/10.2_dbg/storage/innobase/row/row0upd.cc:3286
|
#12 row_upd_step (thr=thr@entry=0x14eeec021ee8) at /test/10.2_dbg/storage/innobase/row/row0upd.cc:3432
|
#13 0x0000562409d3e586 in row_update_for_mysql (prebuilt=0x14eeec021190) at /test/10.2_dbg/storage/innobase/row/row0mysql.cc:1825
|
#14 0x0000562409c1a7a9 in ha_innobase::update_row (this=0x14eeec020a08, old_row=0x14eeec00c1c8 "\377\001", new_row=0x14eeec00c1c0 "\377\002") at /test/10.2_dbg/storage/innobase/handler/ha_innodb.cc:8960
|
#15 0x0000562409a2c141 in handler::ha_update_row (this=0x14eeec020a08, old_data=0x14eeec00c1c8 "\377\001", new_data=0x14eeec00c1c0 "\377\002") at /test/10.2_dbg/sql/handler.cc:6148
|
#16 0x00005624098df4c1 in mysql_update (thd=thd@entry=0x14eeec000d90, table_list=<optimized out>, fields=@0x14eeec0051f0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14eeec011a38, last = 0x14eeec011a38, elements = 1}, <No data fields>}, values=@0x14eeec0056d0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14eeec011a48, last = 0x14eeec011a48, elements = 1}, <No data fields>}, conds=<optimized out>, order_num=<optimized out>, order=<optimized out>, limit=18446744073709551615, handle_duplicates=<optimized out>, ignore=<optimized out>, found_return=<optimized out>, updated_return=<optimized out>) at /test/10.2_dbg/sql/sql_update.cc:819
|
#17 0x0000562409816f99 in mysql_execute_command (thd=thd@entry=0x14eeec000d90) at /test/10.2_dbg/sql/sql_parse.cc:4032
|
#18 0x000056240981dea0 in mysql_parse (thd=thd@entry=0x14eeec000d90, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14ef30bdc550, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.2_dbg/sql/sql_parse.cc:7762
|
#19 0x00005624098209d9 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14eeec000d90, packet=packet@entry=0x14eeec0195d1 "UPDATE t1 SET a= 2", packet_length=packet_length@entry=18, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.2_dbg/sql/sql_class.h:1096
|
#20 0x00005624098237e1 in do_command (thd=0x14eeec000d90) at /test/10.2_dbg/sql/sql_parse.cc:1381
|
#21 0x0000562409928a61 in do_handle_one_connection (connect=connect@entry=0x56240d393350) at /test/10.2_dbg/sql/sql_connect.cc:1336
|
#22 0x0000562409928c8c in handle_one_connection (arg=0x56240d393350) at /test/10.2_dbg/sql/sql_connect.cc:1241
|
#23 0x000014ef4c18e609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#24 0x000014ef4bd85293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.2.37 (dbg), 10.3.28 (dbg), 10.4.18 (dbg), 10.5.9 (dbg), 10.6.0 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.2.37 (opt), 10.3.28 (opt), 10.4.18 (opt), 10.5.9 (opt), 10.6.0 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.50 (dbg), 5.6.50 (opt), 5.7.32 (dbg), 5.7.32 (opt), 8.0.22 (dbg), 8.0.22 (opt)
|
|
Increase prio for review + affect tests. Unique ID's seen so far:
id|SIGABRT|trx_write_trx_id|row_ins_step|row_insert_for_mysql|ha_innobase::write_row
|
id|SIGABRT|trx_write_trx_id|row_upd_clust_rec_by_insert|row_upd_clust_step|row_upd
|
id > 0|SIGABRT|trx_write_trx_id|row_ins_step|row_insert_for_mysql|ha_innobase::write_row
|
val > 0|SIGABRT|row_upd_index_entry_sys_field|row_upd_clust_rec_by_insert|row_upd_clust_step|row_upd
|
thr_get_trx(thr)->id || index->table->no_rollback()|SIGABRT|row_ins_index_entry|row_ins_index_entry_step|row_ins|row_ins_step
|
|
|
10.6 adds yet more to this assertion family:
--source include/have_innodb.inc
|
|
CREATE TEMPORARY TABLE tmp (a INT) ENGINE=InnoDB;
|
INSERT INTO tmp () VALUES (),();
|
SET TX_READ_ONLY= 1;
|
INSERT INTO tmp SELECT * FROM tmp;
|
|
10.6 3f871b33
|
mariadbd: /data/src/10.6/storage/innobase/row/row0ins.cc:3376: dberr_t row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*): Assertion `thr_get_trx(thr)->id || index->table->no_rollback()' failed.
|
210126 18:31:11 [ERROR] mysqld got signal 6 ;
|
|
#7 0x00007fb5f1a0ef36 in __GI___assert_fail (assertion=0x556e76fc6c2c "id", file=0x556e76fc6c30 "/data/src/10.5/storage/innobase/include/trx0sys.h", line=90, function=0x556e76fc6c68 "void trx_write_trx_id(byte*, trx_id_t)") at assert.c:101
|
#8 0x0000556e767f5035 in trx_write_trx_id (db_trx_id=0x7fb5bc0f91c6 "", id=0) at /data/src/10.5/storage/innobase/include/trx0sys.h:90
|
#9 0x0000556e76802b44 in row_ins_step (thr=0x7fb5bc0f9358) at /data/src/10.5/storage/innobase/row/row0ins.cc:3754
|
#10 0x0000556e76827460 in row_insert_for_mysql (mysql_rec=0x7fb5bc1b3998 "\377", prebuilt=0x7fb5bc0f8c38, ins_mode=ROW_INS_NORMAL) at /data/src/10.5/storage/innobase/row/row0mysql.cc:1421
|
#11 0x0000556e7666fa69 in ha_innobase::write_row (this=0x7fb5bc2254c0, record=0x7fb5bc1b3998 "\377") at /data/src/10.5/storage/innobase/handler/ha_innodb.cc:7544
|
#12 0x0000556e76202fcb in handler::ha_write_row (this=0x7fb5bc2254c0, buf=0x7fb5bc1b3998 "\377") at /data/src/10.5/sql/handler.cc:7151
|
#13 0x0000556e75e36115 in write_record (thd=0x7fb5bc000db8, table=0x7fb5bc224928, info=0x7fb5bc015ca8, sink=0x0) at /data/src/10.5/sql/sql_insert.cc:2106
|
#14 0x0000556e75e3bd79 in select_insert::send_data (this=0x7fb5bc015c58, values=...) at /data/src/10.5/sql/sql_insert.cc:4073
|
#15 0x0000556e75f2476f in select_result_sink::send_data_with_check (this=0x7fb5bc015c58, items=..., u=0x7fb5bc004f58, sent=0) at /data/src/10.5/sql/sql_class.h:5334
|
#16 0x0000556e75f0a84c in end_send (join=0x7fb5bc015d10, join_tab=0x7fb5bc0177c8, end_of_records=false) at /data/src/10.5/sql/sql_select.cc:21823
|
#17 0x0000556e75f07e45 in evaluate_join_record (join=0x7fb5bc015d10, join_tab=0x7fb5bc017420, error=0) at /data/src/10.5/sql/sql_select.cc:20854
|
#18 0x0000556e75f1e8c2 in AGGR_OP::end_send (this=0x7fb5bc017ca0) at /data/src/10.5/sql/sql_select.cc:28935
|
#19 0x0000556e75f07124 in sub_select_postjoin_aggr (join=0x7fb5bc015d10, join_tab=0x7fb5bc017420, end_of_records=true) at /data/src/10.5/sql/sql_select.cc:20341
|
#20 0x0000556e75f07497 in sub_select (join=0x7fb5bc015d10, join_tab=0x7fb5bc017078, end_of_records=true) at /data/src/10.5/sql/sql_select.cc:20576
|
#21 0x0000556e75f06bfc in do_select (join=0x7fb5bc015d10, procedure=0x0) at /data/src/10.5/sql/sql_select.cc:20167
|
#22 0x0000556e75eda6a0 in JOIN::exec_inner (this=0x7fb5bc015d10) at /data/src/10.5/sql/sql_select.cc:4466
|
#23 0x0000556e75ed97c1 in JOIN::exec (this=0x7fb5bc015d10) at /data/src/10.5/sql/sql_select.cc:4246
|
#24 0x0000556e75edae83 in mysql_select (thd=0x7fb5bc000db8, tables=0x7fb5bc014ce0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2202244745984, result=0x7fb5bc015c58, unit=0x7fb5bc004f58, select_lex=0x7fb5bc0146f0) at /data/src/10.5/sql/sql_select.cc:4662
|
#25 0x0000556e75ecaa73 in handle_select (thd=0x7fb5bc000db8, lex=0x7fb5bc004e90, result=0x7fb5bc015c58, setup_tables_done_option=1073741824) at /data/src/10.5/sql/sql_select.cc:417
|
#26 0x0000556e75e87010 in mysql_execute_command (thd=0x7fb5bc000db8) at /data/src/10.5/sql/sql_parse.cc:4742
|
#27 0x0000556e75e922f0 in mysql_parse (thd=0x7fb5bc000db8, rawbuf=0x7fb5bc013f30 "INSERT INTO tmp SELECT * FROM tmp", length=33, parser_state=0x7fb5e6db2510, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:8062
|
#28 0x0000556e75e7e277 in dispatch_command (command=COM_QUERY, thd=0x7fb5bc000db8, packet=0x7fb5bc0090a9 "INSERT INTO tmp SELECT * FROM tmp", packet_length=33, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:1889
|
#29 0x0000556e75e7ca6b in do_command (thd=0x7fb5bc000db8) at /data/src/10.5/sql/sql_parse.cc:1370
|
#30 0x0000556e7602a871 in do_handle_one_connection (connect=0x556e7952aa68, put_in_cache=true) at /data/src/10.5/sql/sql_connect.cc:1410
|
#31 0x0000556e7602a5d4 in handle_one_connection (arg=0x556e794b5028) at /data/src/10.5/sql/sql_connect.cc:1312
|
#32 0x0000556e7658956b in pfs_spawn_thread (arg=0x556e79449148) at /data/src/10.5/storage/perfschema/pfs.cc:2201
|
#33 0x00007fb5f1f26609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#34 0x00007fb5f1afa293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
10.5 fails with one (or another) of the old ones.
|
|
Interestingly, for that last testcase, it may depend on the version of 10.6 as to what assert one gets. i.e. on 9118fd360a3da0bba521caf2a35c424968235ac4 from 1/1/21 I get the `id` sigabrt in trx_write_trx_id instead. With the latest revision 3f871b339429441ad907ecf7dfabdc414797e664 I confirmed now also get:
thr_get_trx(thr)->id || index->table->no_rollback()|SIGABRT|row_ins_index_entry|row_ins_index_entry_step|row_ins|row_ins_step
|
|
|
Please fix together with MDEV-22257. Also see MDEV-24715.
|
|
Yet another completely different one with likely the same cause
SET sql_mode='';
|
SET GLOBAL tx_read_only=TRUE;
|
CREATE TEMPORARY TABLE t (c INT);
|
SET SESSION tx_read_only=DEFAULT;
|
INSERT INTO t VALUES(1);
|
INSERT INTO t SELECT * FROM t;
|
Leads to:
|
10.6.0 3f871b339429441ad907ecf7dfabdc414797e664 (Debug)
|
mysqld: /data/builds/10.6_dbg/storage/innobase/row/row0ins.cc:3376: dberr_t row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*): Assertion `thr_get_trx(thr)->id || index->table->no_rollback()' failed.
|
|
10.6.0 3f871b339429441ad907ecf7dfabdc414797e664 (Debug)
|
Core was generated by `/test/MD260121-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 0x1460ac0e5700 (LWP 3869551))]
|
(gdb) bt
|
#0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
|
#1 0x0000563e87847210 in my_write_core (sig=sig@entry=6) at /data/builds/10.6_dbg/mysys/stacktrace.c:424
|
#2 0x0000563e86fdc2d0 in handle_fatal_signal (sig=6) at /data/builds/10.6_dbg/sql/signal_handler.cc:330
|
#3 <signal handler called>
|
#4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#5 0x00001460b5349859 in __GI_abort () at abort.c:79
|
#6 0x00001460b5349729 in __assert_fail_base (fmt=0x1460b54df588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x563e87c401b0 "thr_get_trx(thr)->id || index->table->no_rollback()", file=0x563e87c3e788 "/data/builds/10.6_dbg/storage/innobase/row/row0ins.cc", line=3376, function=<optimized out>) at assert.c:92
|
#7 0x00001460b535af36 in __GI___assert_fail (assertion=assertion@entry=0x563e87c401b0 "thr_get_trx(thr)->id || index->table->no_rollback()", file=file@entry=0x563e87c3e788 "/data/builds/10.6_dbg/storage/innobase/row/row0ins.cc", line=line@entry=3376, function=function@entry=0x563e87c401e8 "dberr_t row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*)") at assert.c:101
|
#8 0x0000563e8753a2f3 in row_ins_index_entry (thr=0x1460640239c0, entry=0x1460640240e8, index=0x1460640216e8) at /data/builds/10.6_dbg/storage/innobase/include/dict0mem.h:1790
|
#9 row_ins_index_entry_step (thr=0x1460640239c0, node=0x146064023790) at /data/builds/10.6_dbg/storage/innobase/row/row0ins.cc:3552
|
#10 row_ins (thr=0x1460640239c0, node=0x146064023790) at /data/builds/10.6_dbg/storage/innobase/row/row0ins.cc:3698
|
#11 row_ins_step (thr=thr@entry=0x1460640239c0) at /data/builds/10.6_dbg/storage/innobase/row/row0ins.cc:3840
|
#12 0x0000563e8755ebef in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x1460640225d8 "\375\001", prebuilt=0x146064023298, ins_mode=ROW_INS_NORMAL) at /data/builds/10.6_dbg/storage/innobase/row/row0mysql.cc:1427
|
#13 0x0000563e873e7d8a in ha_innobase::write_row (this=0x146064022a40, record=0x1460640225d8 "\375\001") at /data/builds/10.6_dbg/storage/innobase/handler/ha_innodb.cc:7338
|
#14 0x0000563e86ff0618 in handler::ha_write_row (this=0x146064022a40, buf=0x1460640225d8 "\375\001") at /data/builds/10.6_dbg/sql/handler.cc:7151
|
#15 0x0000563e86cc64ad in write_record (thd=0x146064000db8, table=0x146064022148, info=info@entry=0x146064014430, sink=0x0) at /data/builds/10.6_dbg/sql/sql_insert.cc:2106
|
#16 0x0000563e86cc6905 in select_insert::send_data (this=0x1460640143e0, values=<optimized out>) at /data/builds/10.6_dbg/sql/sql_insert.cc:4076
|
#17 0x0000563e86d7bba8 in select_result_sink::send_data_with_check (sent=<optimized out>, u=<optimized out>, items=@0x146064014820: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x146064016590, last = 0x146064016590, elements = 1}, <No data fields>}, this=<optimized out>) at /data/builds/10.6_dbg/sql/sql_class.h:5376
|
#18 end_send (join=0x146064014498, join_tab=0x146064015f68, end_of_records=<optimized out>) at /data/builds/10.6_dbg/sql/sql_select.cc:21802
|
#19 0x0000563e86d4a87e in evaluate_join_record (join=join@entry=0x146064014498, join_tab=0x146064015bb8, error=error@entry=0) at /data/builds/10.6_dbg/sql/sql_select.cc:20825
|
#20 0x0000563e86d8c579 in AGGR_OP::end_send (this=this@entry=0x146064016440) at /data/builds/10.6_dbg/sql/sql_select.cc:28914
|
#21 0x0000563e86d8c8bc in sub_select_postjoin_aggr (join=0x146064014498, join_tab=0x146064015bb8, end_of_records=<optimized out>) at /data/builds/10.6_dbg/sql/sql_select.cc:20312
|
#22 0x0000563e86d60df6 in sub_select (join=0x146064014498, join_tab=0x146064015808, end_of_records=<optimized out>) at /data/builds/10.6_dbg/sql/sql_select.cc:20546
|
#23 0x0000563e86d99a55 in do_select (procedure=<optimized out>, join=0x146064014498) at /data/builds/10.6_dbg/sql/sql_select.cc:20151
|
#24 JOIN::exec_inner (this=this@entry=0x146064014498) at /data/builds/10.6_dbg/sql/sql_select.cc:4476
|
#25 0x0000563e86d99e92 in JOIN::exec (this=this@entry=0x146064014498) at /data/builds/10.6_dbg/sql/sql_select.cc:4256
|
#26 0x0000563e86d980f2 in mysql_select (thd=thd@entry=0x146064000db8, tables=0x146064013468, fields=@0x146064012fc8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x146064013420, last = 0x146064013420, elements = 1}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2202244745984, result=0x1460640143e0, unit=0x146064004f80, select_lex=0x146064012e78) at /data/builds/10.6_dbg/sql/sql_select.cc:4672
|
#27 0x0000563e86d983b8 in handle_select (thd=thd@entry=0x146064000db8, lex=lex@entry=0x146064004eb8, result=result@entry=0x1460640143e0, setup_tables_done_option=setup_tables_done_option@entry=1073741824) at /data/builds/10.6_dbg/sql/sql_select.cc:417
|
#28 0x0000563e86d19e77 in mysql_execute_command (thd=thd@entry=0x146064000db8) at /data/builds/10.6_dbg/sql/sql_parse.cc:4594
|
#29 0x0000563e86d0415e in mysql_parse (thd=thd@entry=0x146064000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1460ac0e43d0) at /data/builds/10.6_dbg/sql/sql_parse.cc:7901
|
#30 0x0000563e86d1224f in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x146064000db8, packet=packet@entry=0x14606401aac9 "INSERT INTO t SELECT * FROM t", packet_length=packet_length@entry=29) at /data/builds/10.6_dbg/sql/sql_class.h:1294
|
#31 0x0000563e86d15581 in do_command (thd=0x146064000db8) at /data/builds/10.6_dbg/sql/sql_parse.cc:1365
|
#32 0x0000563e86e71079 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x563e8a9c5ad8, put_in_cache=put_in_cache@entry=true) at /data/builds/10.6_dbg/sql/sql_connect.cc:1410
|
#33 0x0000563e86e7177d in handle_one_connection (arg=arg@entry=0x563e8a9c5ad8) at /data/builds/10.6_dbg/sql/sql_connect.cc:1312
|
#34 0x0000563e8732443f in pfs_spawn_thread (arg=0x563e8a902718) at /data/builds/10.6_dbg/storage/perfschema/pfs.cc:2201
|
#35 0x00001460b5857609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#36 0x00001460b5446293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.2.37 (dbg), 10.3.28 (dbg), 10.4.18 (dbg), 10.5.9 (dbg), 10.6.0 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.2.37 (opt), 10.3.28 (opt), 10.4.18 (opt), 10.5.9 (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)
kevg A fix for this bug would be really appreciated! Thank you
|
|
CREATE TEMPORARY TABLE t(a INT);
|
SET SESSION tx_read_only=ON;
|
LOCK TABLE t READ;
|
SELECT COUNT(*)FROM t;
|
INSERT INTO t VALUES (0);
|
|
|
kevg, I posted a comment to the 10.2 version that should apply to all versions of the patch. I think that we probably can avoid writing nonzero DB_TRX_ID into temporary tables, because they are private to the current connection and there are no MVCC reads (which would require valid DB_TRX_ID). If there are assertions on rollback regarding DB_TRX_ID match, those should be cleared.
I think that we need test cases that cover rollback, either by an explicit ROLLBACK statement or by triggering a duplicate key error. Also, the results should be verified with SELECT. Something like this, for example:
START TRANSACTION READ ONLY;
|
INSERT INTO t VALUES(0);
|
SELECT * FROM t;
|
ROLLBACK;
|
SELECT * FROM t;
|
START TRANSACTION READ ONLY;
|
INSERT INTO t VALUES(0);
|
COMMIT;
|
SELECT * FROM t;
|
|
|
kevg This testcase:
SET SQL_MODE='';
|
CREATE TEMPORARY TABLE t3 (c1 INT PRIMARY KEY,c2 INT,c3 INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (c1 INT,c2 INT,c3 INT) ENGINE=InnoDB;
|
CREATE TEMPORARY TABLE t3 (c1 INT) ENGINE=InnoDB;
|
INSERT INTO t2 VALUES ('a','a','a');
|
START TRANSACTION WITH CONSISTENT SNAPSHOT, READ ONLY;
|
INSERT INTO t3 SELECT * FROM t2;
|
Is crashing revision a3e3225cd3b816d47621e749e21a71b6a864a96a (from 15 April 2021) with
|
10.6.0 a3e3225cd3b816d47621e749e21a71b6a864a96a (Debug)
|
mysqld: /test/10.6_dbg/storage/innobase/row/row0ins.cc:3381: dberr_t row_ins_index_entry(dict_index_t*, dtuple_t*, que_thr_t*): Assertion `thr_get_trx(thr)->id || index->table->no_rollback()' failed.
|
Shall I log a new bug for this?
|
|
Roel the patch fixes the crash in your test case. Just wait until it's merged into 10.6.
|
|
This is now merged up to 10.6.
|
|
Thank you both
|