[MDEV-23364] Wrong results or crash in Field::is_null with multiple myisam_repair_threads Created: 2020-08-01  Updated: 2023-05-16  Resolved: 2022-12-07

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - MyISAM, Virtual Columns
Affects Version/s: 10.4, 10.5
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Oleksandr Byelkin
Resolution: Cannot Reproduce Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-23363 Crashes and corruption in get_field_d... Closed
relates to MDEV-29585 Incorrect output of SELECT with CTE Confirmed

 Description   

_The problem must be related to MDEV-23363, but I'll leave MDEV-23363 to be about get_field_default_value.

The test case is very non-deterministic. Record a test result and run with high --repeat (hundreds, thousands).

SET myisam_repair_threads= 4;
CREATE TABLE t1 (a INT, b TEXT, c VARBINARY(1024), UNIQUE(c), KEY(b(128)), KEY(a)) ENGINE=MyISAM;
INSERT INTO t1 SELECT 1,'a','foo';
SELECT * FROM t1;
 
#  Cleanup
DROP TABLE t1;

10.5 842da858

#3  <signal handler called>
#4  0x0000556c40e2e638 in Field::is_null (this=0x7fd89c0f7da0, row_offset=0) at /data/src/10.5/sql/field.h:1364
#5  0x0000556c40e2b8ed in Protocol_text::store (this=0x7fd89c0010e0, field=0x7fd89c0f7da0) at /data/src/10.5/sql/protocol.cc:1319
#6  0x0000556c412e8e35 in Item_field::send (this=0x7fd89c015638, protocol=0x7fd89c0010e0, buffer=0x7fd8b349d0e0) at /data/src/10.5/sql/item.cc:7216
#7  0x0000556c40e2a989 in Protocol::send_result_set_row (this=0x7fd89c0010e0, row_items=0x7fd89c013aa8) at /data/src/10.5/sql/protocol.cc:1092
#8  0x0000556c40ee33c5 in select_send::send_data (this=0x7fd89c014f30, items=...) at /data/src/10.5/sql/sql_class.cc:3020
#9  0x0000556c40ff89f9 in select_result_sink::send_data_with_check (this=0x7fd89c014f30, items=..., u=0x7fd89c004b30, sent=0) at /data/src/10.5/sql/sql_class.h:5296
#10 0x0000556c40fdf622 in end_send (join=0x7fd89c014f58, join_tab=0x0, end_of_records=false) at /data/src/10.5/sql/sql_select.cc:21833
#11 0x0000556c40fdb739 in do_select (join=0x7fd89c014f58, procedure=0x0) at /data/src/10.5/sql/sql_select.cc:20131
#12 0x0000556c40faf4ab in JOIN::exec_inner (this=0x7fd89c014f58) at /data/src/10.5/sql/sql_select.cc:4450
#13 0x0000556c40fae5d7 in JOIN::exec (this=0x7fd89c014f58) at /data/src/10.5/sql/sql_select.cc:4231
#14 0x0000556c40fafd08 in mysql_select (thd=0x7fd89c000b18, tables=0x7fd89c013f50, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fd89c014f30, unit=0x7fd89c004b30, select_lex=0x7fd89c013958) at /data/src/10.5/sql/sql_select.cc:4655
#15 0x0000556c40f9f9ae in handle_select (thd=0x7fd89c000b18, lex=0x7fd89c004a68, result=0x7fd89c014f30, setup_tables_done_option=0) at /data/src/10.5/sql/sql_select.cc:429
#16 0x0000556c40f64f00 in execute_sqlcom_select (thd=0x7fd89c000b18, all_tables=0x7fd89c013f50) at /data/src/10.5/sql/sql_parse.cc:6209
#17 0x0000556c40f5c1a7 in mysql_execute_command (thd=0x7fd89c000b18) at /data/src/10.5/sql/sql_parse.cc:3931
#18 0x0000556c40f69d4d in mysql_parse (thd=0x7fd89c000b18, rawbuf=0x7fd89c0138d0 "SELECT * FROM t1", length=16, parser_state=0x7fd8b349e520, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:7993
#19 0x0000556c40f56046 in dispatch_command (command=COM_QUERY, thd=0x7fd89c000b18, packet=0x7fd89c1af1e9 "", packet_length=16, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:1867
#20 0x0000556c40f5477e in do_command (thd=0x7fd89c000b18) at /data/src/10.5/sql/sql_parse.cc:1348
#21 0x0000556c410fa07a in do_handle_one_connection (connect=0x556c43dc1b88, put_in_cache=true) at /data/src/10.5/sql/sql_connect.cc:1410
#22 0x0000556c410f9de2 in handle_one_connection (arg=0x556c43dc1b88) at /data/src/10.5/sql/sql_connect.cc:1312
#23 0x0000556c41638126 in pfs_spawn_thread (arg=0x556c43dc17b8) at /data/src/10.5/storage/perfschema/pfs.cc:2201
#24 0x00007fd8be8cb4a4 in start_thread (arg=0x7fd8b349f700) at pthread_create.c:456
#25 0x00007fd8bc9ffd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

10.5 842da858

--- /data/bld/10.5-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
+++ /data/bld/10.5-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:36:03.993514816 +0300
@@ -3,5 +3,5 @@
 INSERT INTO t1 SELECT 1,'a','foo';
 SELECT * FROM t1;
 a	b	c
-1	a	foo
+1	a	NULL
 DROP TABLE t1;
 
mysqltest: Result length mismatch

10.4 4db4b773

--- /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
+++ /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:34:22.102681497 +0300
@@ -3,5 +3,5 @@
 INSERT INTO t1 SELECT 1,'a','foo';
 SELECT * FROM t1;
 a	b	c
-1	a	foo
+NULL	a	foo
 DROP TABLE t1;
 
mysqltest: Result length mismatch

--- /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
+++ /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:35:10.722124580 +0300
@@ -3,5 +3,5 @@
 INSERT INTO t1 SELECT 1,'a','foo';
 SELECT * FROM t1;
 a	b	c
-1	a	foo
+NULL	NULL	NULL
 DROP TABLE t1;
 
mysqltest: Result length mismatch

The test case is not applicable to earlier versions due to unique blobs.
I'm adding virtual columns to the components, because most of unique blob-related issues turn out to be caused by virtual column flaws.



 Comments   
Comment by Alice Sherepa [ 2022-12-07 ]

I could not repeat on current 10.4 07a06022c4e63adc360b427-10.10, tried with --repeat=1000

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