PS 5.6 corrupt_table_action needs fixes
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS | Status tracked in 5.7 | |||||
5.1 |
Won't Fix
|
Medium
|
Unassigned | |||
5.5 |
Triaged
|
Medium
|
Unassigned | |||
5.6 |
Triaged
|
Medium
|
Unassigned | |||
5.7 |
Triaged
|
Medium
|
Unassigned |
Bug Description
George reviewed at https:/
reproduced below:
There is a possible bad memory read now in btr0cur.
root_block = btr_root_
height = btr_page_
btr_root_
The call to buf_block_
In btr_page_
mach_
So either mach_read_from_2 will segfault or btr_page_
If UNIV_BTR_PRINT is defined, there are also similar issues in btr_print_index and btr_print_recursive
There is a similar issue in btr0cur.
In all these cases, the return value of btr_root_block_get should probably be tested in conjunction with srv_pass_
There is also a merge conflict in fsp0fsp.cc:3078.
btr0btr.cc:850 in btr_root_
btr_print_recursive calls btr_print_recursive at btr0btr.cc:4033 directly passing the result of btr_node_
btr_validate_level at btr0btr.cc:4435 calls btr_node_
All of these call btr_block_get and never check the result for (srv_pass_
btr_attach_
btr_level_
btr_compress at btr0btr.cc:3515 & 3524
btr_discard_page at btr0btr.cc:3873 & 3881
btr_validate_
btr_validate_
row_merge_
As a result of now possibly returning NULL from fut_get_ptr at fut0fut.ic:54, these may inadvertantly use a NULL pointer without (srv_pass_
fsp_alloc_
fseg_
fseg_validate_low at fsp0fsp.cc:3590, 3616 & 3639 when calling flst_get_next_addr with the result of xdes_lst_
fsp_validate at fsp0fsp.cc:3840, 3866 & 3891 when calling flst_get_next_addr with the result of xdes_lst_
fsp_validate at fsp0fsp.cc:3918 & 3963 when calling fsp_seg_
fsp_print at fsp0fsp.cc:4098 & 4135 when calling fsp_seg_
flst_add_last at fut0lst.cc:107 when calling flst_insert_after with the result of fut_get_ptr
flst_add_first at fut0lst.cc:150 when calling flst_insert_before with the result of fut_get_ptr
flst_insert_after at fut0lst.cc:198 when calling flst_write_addr with the result of fut_get_ptr
flst_
flst_remove at fut0lst.cc:309 & 328 when calling flst_write_addr with the result of fut_get_ptr
flst_cut_end at fut0lst.cc:383 when calling flst_write_addr with the result of fut_get_ptr
flst_validate at fut0lst.cc:480 when calling flst_get_next_addr with the result of fut_get_ptr
flst_validate at fut0lst.cc:495 when calling flst_get_prev_addr with the result of fut_get_ptr
tags: | added: 56qual |
tags: | added: xtradb |
tags: | added: corrupt-table-action |
Not often used feature, so no 56qual as per Laurynas