[MDEV-26820] Assertion `marked_for_read()' failed upon SELECT with VALUE(virtual column) Created: 2021-10-13  Updated: 2023-11-28

Status: Confirmed
Project: MariaDB Server
Component/s: Virtual Columns
Affects Version/s: 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Nikita Malyavin
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-22943 Assertion `marked_for_read()' failed ... Confirmed

 Description   

I've closed some bugs where similar failures are no longer reproducible on whatever reason, and opening this one instead in hope to get some action on it

CREATE TABLE t1 (a VARCHAR(8), b VARCHAR(8) AS (REPEAT(a,1)) VIRTUAL) ENGINE=MyISAM;
INSERT INTO t1 (a) VALUES ('foo'),('bar');
SELECT VALUE(b) FROM (SELECT * FROM t1) sq;
 
# Cleanup
DROP TABLE t1;

10.4 b44e12fe

mysqld: /data/src/10.4/sql/field.cc:7794: virtual String* Field_varstring::val_str(String*, String*): Assertion `marked_for_read()' failed.
211013 19:05:31 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f3cfd2d9f36 in __GI___assert_fail (assertion=0x562abd4cc68d "marked_for_read()", file=0x562abd4cc0c3 "/data/src/10.4/sql/field.cc", line=7794, function=0x562abd4cee48 "virtual String* Field_varstring::val_str(String*, String*)") at assert.c:101
#8  0x0000562abc96725d in Field_varstring::val_str (this=0x7f3cdc187718, val_buffer=0x7f3cdc1a5438, val_ptr=0x7f3cdc1a5328) at /data/src/10.4/sql/field.cc:7794
#9  0x0000562abc9b4c82 in Item_field::val_str (this=0x7f3cdc1a52f8, str=0x7f3cdc1a5438) at /data/src/10.4/sql/item.cc:3173
#10 0x0000562abca62b1c in Item_func_repeat::val_str (this=0x7f3cdc1a5408, str=0x7f3cdc1a5438) at /data/src/10.4/sql/item_strfunc.cc:3074
#11 0x0000562abc9bf533 in Item::save_str_in_field (this=0x7f3cdc1a5408, field=0x7f3cdc187800, no_conversions=false) at /data/src/10.4/sql/item.cc:6581
#12 0x0000562abc845f46 in Type_handler_string_result::Item_save_in_field (this=0x562abdbe1dd0 <type_handler_varchar>, item=0x7f3cdc1a5408, field=0x7f3cdc187800, no_conversions=false) at /data/src/10.4/sql/sql_type.cc:3817
#13 0x0000562abc9bf87f in Item::save_in_field (this=0x7f3cdc1a5408, field=0x7f3cdc187800, no_conversions=false) at /data/src/10.4/sql/item.cc:6629
#14 0x0000562abc75e315 in TABLE::update_virtual_fields (this=0x7f3cdc041590, h=0x7f3cdc1a4b18, update_mode=VCOL_UPDATE_FOR_READ) at /data/src/10.4/sql/table.cc:8404
#15 0x0000562abc9945a1 in handler::ha_rnd_next (this=0x7f3cdc1a4b18, buf=0x7f3cdc1876d0 "\376\003foo") at /data/src/10.4/sql/handler.cc:2895
#16 0x0000562abcb48040 in rr_sequential (info=0x7f3cdc019528) at /data/src/10.4/sql/records.cc:485
#17 0x0000562abc566921 in READ_RECORD::read_record (this=0x7f3cdc019528) at /data/src/10.4/sql/records.h:70
#18 0x0000562abc69f17a in join_init_read_record (tab=0x7f3cdc019460) at /data/src/10.4/sql/sql_select.cc:21529
#19 0x0000562abc69ccc9 in sub_select (join=0x7f3cdc017448, join_tab=0x7f3cdc019460, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20584
#20 0x0000562abc69c1f2 in do_select (join=0x7f3cdc017448, procedure=0x0) at /data/src/10.4/sql/sql_select.cc:20125
#21 0x0000562abc670b87 in JOIN::exec_inner (this=0x7f3cdc017448) at /data/src/10.4/sql/sql_select.cc:4534
#22 0x0000562abc66fcb6 in JOIN::exec (this=0x7f3cdc017448) at /data/src/10.4/sql/sql_select.cc:4316
#23 0x0000562abc671422 in mysql_select (thd=0x7f3cdc000d90, tables=0x7f3cdc016450, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7f3cdc017420, unit=0x7f3cdc004cc0, select_lex=0x7f3cdc014850) at /data/src/10.4/sql/sql_select.cc:4754
#24 0x0000562abc660c54 in handle_select (thd=0x7f3cdc000d90, lex=0x7f3cdc004c00, result=0x7f3cdc017420, setup_tables_done_option=0) at /data/src/10.4/sql/sql_select.cc:436
#25 0x0000562abc6255b1 in execute_sqlcom_select (thd=0x7f3cdc000d90, all_tables=0x7f3cdc016450) at /data/src/10.4/sql/sql_parse.cc:6449
#26 0x0000562abc61bd7e in mysql_execute_command (thd=0x7f3cdc000d90) at /data/src/10.4/sql/sql_parse.cc:3963
#27 0x0000562abc6295e3 in mysql_parse (thd=0x7f3cdc000d90, rawbuf=0x7f3cdc014798 "SELECT VALUE(b) FROM (SELECT * FROM t1) sq", length=42, parser_state=0x7f3cf81034d0, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:7995
#28 0x0000562abc6158eb in dispatch_command (command=COM_QUERY, thd=0x7f3cdc000d90, packet=0x7f3cdc00abf1 "", packet_length=42, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1857
#29 0x0000562abc614151 in do_command (thd=0x7f3cdc000d90) at /data/src/10.4/sql/sql_parse.cc:1373
#30 0x0000562abc7a64de in do_handle_one_connection (connect=0x562abfd6d400) at /data/src/10.4/sql/sql_connect.cc:1420
#31 0x0000562abc7a6177 in handle_one_connection (arg=0x562abfd6d400) at /data/src/10.4/sql/sql_connect.cc:1316
#32 0x0000562abd1d4ca8 in pfs_spawn_thread (arg=0x562abfcc2dd0) at /data/src/10.4/storage/perfschema/pfs.cc:1869
#33 0x00007f3cfd7f2609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#34 0x00007f3cfd3c5293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Reproducible on 10.4-10.7.
Not reproducible on 10.3.
No obvious immediate problem on a non-debug build.



 Comments   
Comment by Alice Sherepa [ 2021-11-04 ]

A similar test case, with all the other datatypes + field_conv

CREATE TABLE t1 ( id uuid, vid varchar(255) GENERATED always AS (id)) engine=aria;
INSERT INTO t1 (id) values (uuid()),(uuid()),(uuid());
SELECT VALUE( vid ) FROM (select * from t1)dt;

10.7 d20de4d447c7051

mariadbd: /10.7/src/sql/sql_type_fixedbin.h:1203: FixedBinTypeBundle<FbtImpl>::Fbt FixedBinTypeBundle<FbtImpl>::Field_fbt::to_fbt() const [with FbtImpl = UUID]: Assertion `marked_for_read()' failed.
211104 14:27:26 [ERROR] mysqld got signal 6 ;
 
Server version: 10.7.1-MariaDB-debug-log
 
??:0(abort)[0x7fd884d44859]
/lib/x86_64-linux-gnu/libc.so.6(+0x25729)[0x7fd884d44729]
??:0(__assert_fail)[0x7fd884d55f36]
sql/sql_type_fixedbin.h:1204(FixedBinTypeBundle<UUID>::Field_fbt::to_fbt() const)[0x562ff42779fc]
sql/sql_type_fixedbin.h:1210(FixedBinTypeBundle<UUID>::Field_fbt::val_str(String*, String*))[0x562ff42760b1]
sql/field.h:1027(Field::val_str(String*))[0x562ff33ca463]
sql/field.h:746(Field::save_in_field_str(Field*))[0x562ff36caadc]
sql/sql_type_fixedbin.h:1319(FixedBinTypeBundle<UUID>::Field_fbt::save_in_field(Field*))[0x562ff42754a5]
sql/field.h:908(Field::store_field(Field*))[0x562ff36cad38]
sql/field_conv.cc:851(field_conv_incompatible(Field*, Field*))[0x562ff38bc4b7]
sql/field_conv.cc:864(field_conv(Field*, Field*))[0x562ff38bc517]
sql/item.cc:6675(save_field_in_field(Field*, bool*, Field*, bool))[0x562ff3901882]
sql/item.cc:6726(Item_field::save_in_field(Field*, bool))[0x562ff3901acf]
sql/table.cc:8750(TABLE::update_virtual_fields(handler*, enum_vcol_update_mode))[0x562ff3698ba5]
sql/handler.cc:3410(handler::ha_rnd_next(unsigned char*))[0x562ff38d49e3]
sql/records.cc:519(rr_sequential(READ_RECORD*))[0x562ff33e2a4b]
sql/records.h:81(READ_RECORD::read_record())[0x562ff33cd939]
sql/sql_select.cc:22060(join_init_read_record(st_join_table*))[0x562ff35bce61]
sql/sql_select.cc:21062(sub_select(JOIN*, st_join_table*, bool))[0x562ff35ba789]
sql/sql_select.cc:20612(do_select(JOIN*, Procedure*))[0x562ff35b9cf2]
sql/sql_select.cc:4735(JOIN::exec_inner())[0x562ff358d177]
sql/sql_select.cc:4514(JOIN::exec())[0x562ff358c1ed]
sql/sql_select.cc:4995(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*))[0x562ff358db53]
sql/sql_select.cc:545(handle_select(THD*, LEX*, select_result*, unsigned long))[0x562ff357ccfb]
sql/sql_parse.cc:6253(execute_sqlcom_select(THD*, TABLE_LIST*))[0x562ff3524922]
sql/sql_parse.cc:3944(mysql_execute_command(THD*, bool))[0x562ff351bbb1]
sql/sql_parse.cc:8028(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x562ff3529772]
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x562ff3515bcc]
sql/sql_parse.cc:1402(do_command(THD*, bool))[0x562ff3514568]
sql/sql_connect.cc:1418(do_handle_one_connection(CONNECT*, bool))[0x562ff36e9bf3]
sql/sql_connect.cc:1314(handle_one_connection)[0x562ff36e9883]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x562ff3c28d89]
nptl/pthread_create.c:478(start_thread)[0x7fd88526c609]
??:0(clone)[0x7fd884e41293]
 
 
Query (0x7fd850015400): SELECT VALUE( vid ) FROM (select * from t1)dt

sql/field.cc:4244(Field_medium::val_int())[0x558b1cd0adae]
sql/field.h:2057(Field_num::save_in_field(Field*))[0x558b1cb4004d]
sql/field.h:908(Field::store_field(Field*))[0x558b1cb3ed38]
sql/field_conv.cc:851(field_conv_incompatible(Field*, Field*))[0x558b1cd304b7]
sql/field_conv.cc:864(field_conv(Field*, Field*))[0x558b1cd30517]
sql/item.cc:6675(save_field_in_field(Field*, bool*, Field*, bool))[0x558b1cd75882]
sql/item.cc:6726(Item_field::save_in_field(Field*, bool))[0x558b1cd75acf]
sql/table.cc:8750(TABLE::update_virtual_fields(handler*, enum_vcol_update_mode))[0x558b1cb0cba5]
sql/handler.cc:3410(handler::ha_rnd_next(unsigned char*))[0x558b1cd489e3]
sql/records.cc:519(rr_sequential(READ_RECORD*))[0x558b1c856a4b]
sql/records.h:81(READ_RECORD::read_record())[0x558b1c841939]
sql/sql_select.cc:22060(join_init_read_record(st_join_table*))[0x558b1ca30e61]
sql/sql_select.cc:21062(sub_select(JOIN*, st_join_table*, bool))[0x558b1ca2e789]
sql/sql_select.cc:20612(do_select(JOIN*, Procedure*))[0x558b1ca2dcf2]
sql/sql_select.cc:4735(JOIN::exec_inner())[0x558b1ca01177]
sql/sql_select.cc:4514(JOIN::exec())[0x558b1ca001ed]
sql/sql_select.cc:4995(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*))[0x558b1ca01b53]
sql/sql_select.cc:545(handle_select(THD*, LEX*, select_result*, unsigned long))[0x558b1c9f0cfb]
sql/sql_parse.cc:6253(execute_sqlcom_select(THD*, TABLE_LIST*))[0x558b1c998922]
sql/sql_parse.cc:3944(mysql_execute_command(THD*, bool))[0x558b1c98fbb1]
sql/sql_parse.cc:8028(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x558b1c99d772]
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x558b1c989bcc]
sql/sql_parse.cc:1402(do_command(THD*, bool))[0x558b1c988568]
sql/sql_connect.cc:1418(do_handle_one_connection(CONNECT*, bool))[0x558b1cb5dbf3]
sql/sql_connect.cc:1314(handle_one_connection)[0x558b1cb5d883]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x558b1d09cd89]
nptl/pthread_create.c:478(start_thread)[0x7f9dbb7e3609]
??:0(clone)[0x7f9dbb3b8293]

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