[MDEV-19318] Assertion `!(length < share->base.min_block_length)' failed in _ma_scan_block_record Created: 2019-04-24  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Storage Engine - Aria
Affects Version/s: 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Michael Widenius
Resolution: Unresolved Votes: 0
Labels: None


 Description   

The issue is volatile, run with a really big value in --repeat=N (hundreds).

 
CREATE TABLE t1 (a INT) ENGINE=Aria;
CREATE TABLE t2 (b INT) ENGINE=Aria;
 
--connect (con1,localhost,root,,test)
--connect (con2,localhost,root,,test)
 
--connect (con3,localhost,root,,test)
SELECT * FROM t1;
CREATE TEMPORARY TABLE tmp1 (c INT) ENGINE=Aria;
ALTER TABLE tmp1 ADD d CHAR(3);
CREATE TEMPORARY TABLE tmp2 (e TIMESTAMP) ENGINE=Aria;
INSERT INTO tmp1 (c) VALUES (1),(2);
INSERT INTO tmp1 SELECT * FROM tmp1;
ALTER ONLINE TABLE tmp2 FORCE;
DELETE FROM tmp1 LIMIT 1;
 
--connection con2
--send
  ALTER TABLE t1 /*!100301 NOWAIT */ ADD b VARCHAR(8), ALGORITHM=INPLACE;
 
--connection default
SELECT * FROM t2;
 
--connection con3
--error ER_BAD_FIELD_ERROR
ALTER TABLE tmp2 CHANGE IF EXISTS x1 x2 TEXT, ADD x3 VARCHAR(8) AFTER x4;
OPTIMIZE TABLE tmp1;
--error WARN_DATA_TRUNCATED
ALTER TABLE tmp1 CHANGE IF EXISTS b d VARBINARY(4), MODIFY d INT NOT NULL DEFAULT 0, ALTER COLUMN IF EXISTS x SET DEFAULT NULL;
INSERT INTO tmp2 () VALUES ();
 
#--error 0,ER_GET_ERRNO
UPDATE tmp1 SET d = 'foo';
 
# Cleanup
--connection con2
--error ER_ALTER_OPERATION_NOT_SUPPORTED
--reap
--disconnect con1
--disconnect con2
--disconnect con3
--connection default
DROP TABLE t1, t2;

10.3 765ae6e8

mysqld: /data/src/10.3/storage/maria/ma_blockrec.c:5464: _ma_scan_block_record: Assertion `!(length < share->base.min_block_length)' failed.
190424 14:48:56 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f057e88dee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055f320eb1d8f in _ma_scan_block_record (info=0x7f05540f8f10, record=0x7f05540e9bd0 "\377", record_pos=0, skip_deleted=1 '\001') at /data/src/10.3/storage/maria/ma_blockrec.c:5464
#9  0x000055f320e9e902 in maria_scan (info=0x7f05540f8f10, record=0x7f05540e9bd0 "\377") at /data/src/10.3/storage/maria/ma_scan.c:54
#10 0x000055f320e47578 in ha_maria::rnd_next (this=0x7f05540ec588, buf=0x7f05540e9bd0 "\377") at /data/src/10.3/storage/maria/ha_maria.cc:2482
#11 0x000055f32082329f in handler::ha_rnd_next (this=0x7f05540ec588, buf=0x7f05540e9bd0 "\377") at /data/src/10.3/sql/handler.cc:2813
#12 0x000055f3209a4af3 in rr_sequential (info=0x7f0578955180) at /data/src/10.3/sql/records.cc:481
#13 0x000055f3204896ab in READ_RECORD::read_record (this=0x7f0578955180) at /data/src/10.3/sql/records.h:73
#14 0x000055f32061e6f9 in mysql_update (thd=0x7f0554000b00, table_list=0x7f0554013a08, fields=..., values=..., conds=0x0, order_num=0, order=0x0, limit=18446744073709551615, ignore=false, found_return=0x7f0578955700, updated_return=0x7f05789557c0) at /data/src/10.3/sql/sql_update.cc:865
#15 0x000055f320525480 in mysql_execute_command (thd=0x7f0554000b00) at /data/src/10.3/sql/sql_parse.cc:4584
#16 0x000055f32053084b in mysql_parse (thd=0x7f0554000b00, rawbuf=0x7f0554013928 "UPDATE tmp1 SET d = 'foo'", length=25, parser_state=0x7f05789565f0, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:8091
#17 0x000055f32051db1a in dispatch_command (command=COM_QUERY, thd=0x7f0554000b00, packet=0x7f055400b1f1 "UPDATE tmp1 SET d = 'foo'", packet_length=25, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1857
#18 0x000055f32051c504 in do_command (thd=0x7f0554000b00) at /data/src/10.3/sql/sql_parse.cc:1403
#19 0x000055f32068515b in do_handle_one_connection (connect=0x55f323a193e0) at /data/src/10.3/sql/sql_connect.cc:1402
#20 0x000055f320684edf in handle_one_connection (arg=0x55f323a193e0) at /data/src/10.3/sql/sql_connect.cc:1308
#21 0x000055f320a5c04d in pfs_spawn_thread (arg=0x55f32395ec70) at /data/src/10.3/storage/perfschema/pfs.cc:1862
#22 0x00007f0580982494 in start_thread (arg=0x7f0578957700) at pthread_create.c:333
#23 0x00007f057e94a93f in clone () from /lib/x86_64-linux-gnu/libc.so.6

If you start getting ER_GET_ERRNO upon UPDATE, but want to get to the assertion failure instead, uncomment the{{--error line}} before it. Naturally, ER_GET_ERRNO itself is also a problem.

Non-debug build doesn't crash, but quickly enough produces ER_CRASHED_ON_USAGE on the same update.

The test case isn't applicable directly to 10.2, and I couldn't modify it so that the problem would become reproducible on 10.2.


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