[MDEV-23565] Corruption of PAGE_BTR_IBUF_FREE_LIST Created: 2020-08-25  Updated: 2020-08-25

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

Type: Bug Priority: Major
Reporter: Marko Mäkelä Assignee: Marko Mäkelä
Resolution: Unresolved Votes: 0
Labels: corruption

Issue Links:
Relates
relates to MDEV-9663 InnoDB assertion failure: *cursor->in... Closed

 Description   

I received a 9GiB data set (3GiB compressed) that would trigger a crash in the debug build in the flst_validate() check during btr_page_alloc_for_ibuf().

In the system tablespace, the change buffer root page (page 4) would appear empty, but the PAGE_BTR_IBUF_FREE_LIST would contain 608 entries, instead of something like 1 entry (comprising only the empty root page). In the first entry that it would point to, the FLST_PREV was not the null address as expected. The linear forward scan of the list in flst_validate() would fail on the 601th iteration, attempting to access a FIL_NULL page and triggering a fatal error for an invalid page access. In other words, both the start and the end of the doubly-linked list were misplaced.

This corruption was successfully bypassed by SET GLOBAL innodb_change_buffering=none.

Unfortunately, I have no idea how that corruption would have come into existence in the first place.


Generated at Thu Feb 08 09:23:22 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.