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

The test innodb.innodb_buffer_pool_resize occasionally crashes

    XMLWordPrintable

Details

    Description

      The test innodb.innodb_buffer_pool_resize crashes rather often due to various reasons, partly related to the adaptive hash index:

      innodb.innodb_buffer_pool_resize         w40 [ fail ]
              Test ended at 2024-11-07 23:41:31
      CURRENT_TEST: innodb.innodb_buffer_pool_resize
      mysqltest: At line 53: query 'select count(val) from t1' failed: <Unknown> (2013): Lost connection to server during query
      2024-11-07 23:41:28 0 [Note] InnoDB: withdrew 67 blocks from free list. Tried to relocate 1459 pages (1949/1949)
      2024-11-07 23:41:28 0 [Note] InnoDB: withdrawn target: 1949 blocks
      2024-11-07 23:41:28 0 [Note] InnoDB: Latching whole of buffer pool.
      2024-11-07 23:41:28 0 [Note] InnoDB: buffer pool resizing with chunks 2 to 1.
      2024-11-07 23:41:28 0 [Note] InnoDB: 1 chunks (1949 blocks) were freed.
      2024-11-07 23:41:28 0 [Note] InnoDB: Completed to resize buffer pool from 16777216 to 8388608.
      2024-11-07 23:41:28 0 [Note] InnoDB: Re-enabled adaptive hash index.
      2024-11-07 23:41:28 0 [Note] InnoDB: Completed resizing buffer pool at 241107 23:41:28.
      2024-11-07 23:41:30 0x7fe7137ff700  InnoDB: Assertion failure in file /home/buildbot/amd64-debian-11-msan-clang-16/build/storage/innobase/btr/btr0sea.cc line 1010
      InnoDB: Failing assertion: offs < chunk->size
      

      Without looking deeper at this test, I was suspecting that the following might fix this in my MDEV-35049 development branch, but it was not the case:

      diff --git a/storage/innobase/btr/btr0sea.cc b/storage/innobase/btr/btr0sea.cc
      index 39e87067a1e..8eee78018c9 100644
      --- a/storage/innobase/btr/btr0sea.cc
      +++ b/storage/innobase/btr/btr0sea.cc
      @@ -387,7 +387,7 @@ void btr_sea::enable(bool resize) noexcept
         if (!resize)
         {
           mysql_mutex_lock(&buf_pool.mutex);
      -    bool changed= srv_buf_pool_old_size != srv_buf_pool_size;
      +    bool changed= buf_pool.n_chunks_new != buf_pool.n_chunks;
           mysql_mutex_unlock(&buf_pool.mutex);
           if (changed)
             return;
      

      The change would seem to align better with the following in buf_pool_t::resize():

      	mysql_mutex_lock(&mutex);
      	ut_ad(n_chunks_new == n_chunks);
      	ut_ad(UT_LIST_GET_LEN(withdraw) == 0);
       
      	n_chunks_new = (new_instance_size << srv_page_size_shift)
      		/ srv_buf_pool_chunk_unit;
      	curr_size = n_chunks_new * chunks->size;
      	mysql_mutex_unlock(&mutex);
      

      I have not been able to reproduce this under rr record. This reproduces rather well under an MSAN debug build, but I see that other types of builds can reproduce it as well, including non-debug builds. Here is one 10.5 failure, crashing somewhere related to ROW_FORMAT=COMPRESSED block relocation:

      CURRENT_TEST: innodb.innodb_buffer_pool_resize
      mysqltest: In included file "./include/wait_condition.inc": 
      included from /home/jenkins/workspace/Source-Build-Test/src/mysql-test/suite/innodb/t/innodb_buffer_pool_resize.test at line 66:
      At line 54: query 'let $success= `$wait_condition`' failed with wrong errno 2013: 'Lost connection to MySQL server during query', instead of 0...
      2024-10-11  1:31:21 0 [Note] InnoDB: Withdrawing blocks to be shrunken.
      2024-10-11  1:31:21 0 [Note] InnoDB: start to withdraw the last 3764 blocks
      mariadbd: /home/jenkins/workspace/Source-Build-Test/src/storage/innobase/buf/buf0buddy.cc:522: bool buf_buddy_relocate(void*, void*, ulint, bool): Assertion `bpage->id() == page_id' failed.
      

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              marko Marko Mäkelä
              Votes:
              1 Vote for this issue
              Watchers:
              2 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.