Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5(EOL), 10.1(EOL), 10.2(EOL), 10.3(EOL), 10.4(EOL)
Description
The test case is attached. It only contains 3 essential statements – CREATE, INSERT and REPLACE – but INSERT and REPLACE are quite big. Possibly it can be reduced when the problem is known. Also, mind the --sleep at the end of the test case, it should be replaced with a decent way to wait for the purge.
The table definition (also a part of the test case) is this:
CREATE TABLE t ( |
c08 TEXT DEFAULT '', |
c04 TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
c10 BIGINT COMMENT 'Y', |
c03 VARCHAR(1024) NOT NULL DEFAULT '', |
c07 DATE, |
c02 CHAR(3) NOT NULL DEFAULT '', |
c06 DOUBLE(16,8) COMMENT 'Percentage', |
c09 BIGINT COMMENT 'X', |
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, |
c05 LONGBLOB NOT NULL DEFAULT '', |
c01 INT ZEROFILL NOT NULL DEFAULT 0, |
UNIQUE idx1 (c01,c02), |
PRIMARY KEY (id) |
) ENGINE=InnoDB row_format=compressed key_block_size=4;
|
The failure started happening on 10.4 after this commit in 10.4.29
commit ff3d4395d808b6421d2e0714e10d48c7aa2f3c3a
|
Author: Marko Mäkelä
|
Date: Wed Mar 22 14:31:00 2023 +0200
|
|
|
MDEV-30882 Crash on ROLLBACK in a ROW_FORMAT=COMPRESSED table
|
However it is not reproducible with the provided test case on higher versions, so I'm not sure whether it's even worth fixing. Feel free to close if it isn't.
|
10.4 f5dceafd |
mysqld: /data/src/10.4/storage/innobase/row/row0purge.cc:141: bool row_purge_remove_clust_if_poss_low(purge_node_t*, ulint): Assertion `rec_get_deleted_flag(rec, rec_offs_comp(offsets))' failed.
|
230628 22:12:38 [ERROR] mysqld got signal 6 ;
|
|
|
#9 0x00007f22fa853df2 in __GI___assert_fail (assertion=0x55bf452fc3c0 "rec_get_deleted_flag(rec, rec_offs_comp(offsets))", file=0x55bf452fc1c0 "/data/src/10.4/storage/innobase/row/row0purge.cc", line=141, function=0x55bf452fc360 "bool row_purge_remove_clust_if_poss_low(purge_node_t*, ulint)") at ./assert/assert.c:101
|
#10 0x000055bf44086004 in row_purge_remove_clust_if_poss_low (node=0x61a000001908, mode=2) at /data/src/10.4/storage/innobase/row/row0purge.cc:141
|
#11 0x000055bf44086577 in row_purge_remove_clust_if_poss (node=0x61a000001908) at /data/src/10.4/storage/innobase/row/row0purge.cc:198
|
#12 0x000055bf44089449 in row_purge_del_mark (node=0x61a000001908) at /data/src/10.4/storage/innobase/row/row0purge.cc:788
|
#13 0x000055bf4408e61a in row_purge_record_func (node=0x61a000001908, undo_rec=0x6250001723b0 "", thr=0x616000006ad0, updated_extern=false) at /data/src/10.4/storage/innobase/row/row0purge.cc:1332
|
#14 0x000055bf4408ec89 in row_purge (node=0x61a000001908, undo_rec=0x6250001723b0 "", thr=0x616000006ad0) at /data/src/10.4/storage/innobase/row/row0purge.cc:1398
|
#15 0x000055bf4408f2b5 in row_purge_step (thr=0x616000006ad0) at /data/src/10.4/storage/innobase/row/row0purge.cc:1476
|
#16 0x000055bf43f5ba25 in que_thr_step (thr=0x616000006ad0) at /data/src/10.4/storage/innobase/que/que0que.cc:966
|
#17 0x000055bf43f5be8c in que_run_threads_low (thr=0x616000006ad0) at /data/src/10.4/storage/innobase/que/que0que.cc:1028
|
#18 0x000055bf43f5c2e9 in que_run_threads (thr=0x616000006ad0) at /data/src/10.4/storage/innobase/que/que0que.cc:1068
|
#19 0x000055bf4411b810 in srv_task_execute (slot=0x55bf460b8d00 <srv_sys+832>) at /data/src/10.4/storage/innobase/srv/srv0srv.cc:2432
|
#20 0x000055bf4411bc1a in srv_worker_thread (arg=0x0) at /data/src/10.4/storage/innobase/srv/srv0srv.cc:2487
|
#21 0x00007f22fa8a7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
|
#22 0x00007f22fa9285bc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
|