Skip to content

Commit 35c9c85

Browse files
author
Jan Lindström
committed
MDEV-10217: innodb.innodb_bug59641 fails sporadically in buildbot: InnoDB: Failing assertion: current_rec != insert_rec in file page0cur.c line 1052
Added record printout when current_rec == insert_rec with lengths for debug builds.
1 parent 6b71a6d commit 35c9c85

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

storage/innobase/page/page0cur.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,6 +1048,26 @@ page_cur_insert_rec_low(
10481048
insert_rec = rec_copy(insert_buf, rec, offsets);
10491049
rec_offs_make_valid(insert_rec, index, offsets);
10501050

1051+
/* This is because assertion below is debug assertion */
1052+
#ifdef UNIV_DEBUG
1053+
if (UNIV_UNLIKELY(current_rec == insert_rec)) {
1054+
ulint extra_len, data_len;
1055+
extra_len = rec_offs_extra_size(offsets);
1056+
data_len = rec_offs_data_size(offsets);
1057+
1058+
fprintf(stderr, "InnoDB: Error: current_rec == insert_rec "
1059+
" extra_len %lu data_len %lu insert_buf %p rec %p\n",
1060+
extra_len, data_len, insert_buf, rec);
1061+
fprintf(stderr, "InnoDB; Physical record: \n");
1062+
rec_print(stderr, rec, index);
1063+
fprintf(stderr, "InnoDB: Inserted record: \n");
1064+
rec_print(stderr, insert_rec, index);
1065+
fprintf(stderr, "InnoDB: Current record: \n");
1066+
rec_print(stderr, current_rec, index);
1067+
ut_a(current_rec != insert_rec);
1068+
}
1069+
#endif /* UNIV_DEBUG */
1070+
10511071
/* 4. Insert the record in the linked list of records */
10521072
ut_ad(current_rec != insert_rec);
10531073

storage/xtradb/page/page0cur.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,6 +1048,26 @@ page_cur_insert_rec_low(
10481048
insert_rec = rec_copy(insert_buf, rec, offsets);
10491049
rec_offs_make_valid(insert_rec, index, offsets);
10501050

1051+
/* This is because assertion below is debug assertion */
1052+
#ifdef UNIV_DEBUG
1053+
if (UNIV_UNLIKELY(current_rec == insert_rec)) {
1054+
ulint extra_len, data_len;
1055+
extra_len = rec_offs_extra_size(offsets);
1056+
data_len = rec_offs_data_size(offsets);
1057+
1058+
fprintf(stderr, "InnoDB: Error: current_rec == insert_rec "
1059+
" extra_len %lu data_len %lu insert_buf %p rec %p\n",
1060+
extra_len, data_len, insert_buf, rec);
1061+
fprintf(stderr, "InnoDB; Physical record: \n");
1062+
rec_print(stderr, rec, index);
1063+
fprintf(stderr, "InnoDB: Inserted record: \n");
1064+
rec_print(stderr, insert_rec, index);
1065+
fprintf(stderr, "InnoDB: Current record: \n");
1066+
rec_print(stderr, current_rec, index);
1067+
ut_a(current_rec != insert_rec);
1068+
}
1069+
#endif /* UNIV_DEBUG */
1070+
10511071
/* 4. Insert the record in the linked list of records */
10521072
ut_ad(current_rec != insert_rec);
10531073

0 commit comments

Comments
 (0)