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

Corruption of PAGE_BTR_IBUF_FREE_LIST

    XMLWordPrintable

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

            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.