https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109109
--- Comment #12 from Martin Liška <marxin at gcc dot gnu.org> ---
So the problem happens here:
static
uint32_t
trx_undo_free_page(
trx_rseg_t* rseg,
bool in_history,
uint32_t hdr_page_no,
uint32_t page_no,
mtr_t* mtr,
dberr_t* err)
{
do { if (__builtin_expect(!(ulint) (hdr_page_no != page_no), (0))) {
ut_dbg_assertion_failed("hdr_page_no != page_no",
"/home/abuild/rpmbuild/BUILD/mariadb-10.11.2/storage/innobase/trx/trx0undo.cc",
744); } } while (0);
buf_block_t* undo_block = buf_page_get_gen(page_id_t(rseg->space->id,
page_no),
0, RW_X_LATCH, nullptr,
10, mtr, err);
if (__builtin_expect(!undo_block, (0))) {
return 0xFFFFFFFFU;
}
buf_block_t* header_block = buf_page_get_gen(page_id_t(rseg->space->id,
hdr_page_no), <---- HERE
0, RW_X_LATCH, nullptr,
10, mtr, err);
if (__builtin_expect(!header_block, (0))) {
return 0xFFFFFFFFU;
}
...
the function arguments are:
#1 0x570e8874 in trx_undo_free_page (rseg=0x57a56c40 <trx_sys+16768>,
in_history=false, hdr_page_no=807, page_no=817, mtr=0xef4ac434, err=0xef4ac3dc)
at /tmp/trxundo.ii:181925
and the construction of:
page_id_t(rseg->space->id, hdr_page_no)
ends in callee (buf_page_get_gen) with the argument:
(gdb) p page_id
$5 = {m_id = 0}
while in good run it should be {m_id = 807} !