Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-23565

Corruption of PAGE_BTR_IBUF_FREE_LIST

Details

    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.

      Attachments

        Issue Links

          Activity

            There are no comments yet on this issue.

            People

              marko Marko Mäkelä
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.