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

buf_fix_count > 0 for corrupted page when it exits the LRU list

Details

    Description

      One of the purge thread access the corrupted page and tries to remove from LRU list. In the mean time, other purge threads are waiting for same page
      in buf_wait_for_read(). Assertion(buf_fix_count == 0) fails for the purge thread which tries to remove the page from LRU list.

      Attachments

        Activity

          thiru, there appears to be a hang on bb-10.3-MDEV-19435 during the recovery after the injected corruption.

          marko Marko Mäkelä added a comment - thiru , there appears to be a hang on bb-10.3-MDEV-19435 during the recovery after the injected corruption.

          On 10.3, the MDEV-19541 test innodb.leaf_page_corrupted_during_recovery works around this bug by disabling purge, so that it will not access a corrupted page:

          --- 10.2/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test	2019-05-29 11:19:52.141685082 +0300
          +++ 10.3/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test	2019-05-29 10:35:03.380172175 +0300
          @@ -46,6 +46,8 @@
           SELECT * FROM t1 WHERE PK = 1;
           
           let $restart_parameters=--innodb-force-recovery=1;
          +# Work around MDEV-19435 to avoid crash in row_purge_reset_trx_id()
          +let $restart_parameters=--innodb-force-recovery=2;
           --source include/restart_mysqld.inc
           SELECT * FROM t1 WHERE PK = 1;
           --error ER_NOT_KEYFILE
          

          marko Marko Mäkelä added a comment - On 10.3, the MDEV-19541 test innodb.leaf_page_corrupted_during_recovery works around this bug by disabling purge, so that it will not access a corrupted page: --- 10.2/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test 2019-05-29 11:19:52.141685082 +0300 +++ 10.3/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test 2019-05-29 10:35:03.380172175 +0300 @@ -46,6 +46,8 @@ SELECT * FROM t1 WHERE PK = 1; let $restart_parameters=--innodb-force-recovery=1; +# Work around MDEV-19435 to avoid crash in row_purge_reset_trx_id() +let $restart_parameters=--innodb-force-recovery=2; --source include/restart_mysqld.inc SELECT * FROM t1 WHERE PK = 1; --error ER_NOT_KEYFILE

          pushed the patch again with recent 10.3 (includes the fixes of mdev-19541). Let's see how bb responds for this one

          thiru Thirunarayanan Balathandayuthapani added a comment - pushed the patch again with recent 10.3 (includes the fixes of mdev-19541). Let's see how bb responds for this one

          People

            thiru Thirunarayanan Balathandayuthapani
            thiru Thirunarayanan Balathandayuthapani
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

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