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

innodb assert "array->n_elems < array->max_elems" on a huge blob update

Details

    Description

      InnoDB and XtraDB crash on the following test case:

      a.opt

      --max-allowed-packet=128M
      --innodb-log-file-size=210M

      a.test

      source include/have_innodb.inc;
      create table foo (id varchar(37) not null, content longblob) engine=INNODB;
      insert into foo (id, content) values('xyz', '');
      update foo set content=repeat('a', 43941888) where id='xyz';

      Note that if the blob gets larger (45000000) or innodb-log-file-size gets smaller (209M) then there is no crash, instead there's an error InnoDB: The total blob data length (44999232) is greater than 10% of the total redo log size (440401920). Please increase total redo log size.

      Attachments

        Activity

          2015-03-13 15:53:32 7f8920357700 InnoDB: Assertion failure in thread 140226927621888 in file sync0sync.cc line 1325
          InnoDB: Failing assertion: array->n_elems < array->max_elems

          with 10.0 on commit 184f718fef0101a7559364cb97e22ee568e64c12

          jplindst Jan Lindström (Inactive) added a comment - 2015-03-13 15:53:32 7f8920357700 InnoDB: Assertion failure in thread 140226927621888 in file sync0sync.cc line 1325 InnoDB: Failing assertion: array->n_elems < array->max_elems with 10.0 on commit 184f718fef0101a7559364cb97e22ee568e64c12

          How important this really is, I do not follow why someone would run their database using debug build ?

          jplindst Jan Lindström (Inactive) added a comment - How important this really is, I do not follow why someone would run their database using debug build ?

          commit 99a2c061d7bfc181b04a0adc14ce036fab821d85
          Author: Jan Lindström <jan.lindstrom@mariadb.com>
          Date: Tue Mar 17 20:35:05 2015 +0200

          MDEV-7754: innodb assert "array->n_elems < array->max_elems" on a huge blob
          update

          Problem was that static array was used for storing thread mutex sync levels.
          Fixed by using std::vector instead.

          Does not contain test case to avoid too big memory/disk space usage
          on buildbot VMs.

          jplindst Jan Lindström (Inactive) added a comment - commit 99a2c061d7bfc181b04a0adc14ce036fab821d85 Author: Jan Lindström <jan.lindstrom@mariadb.com> Date: Tue Mar 17 20:35:05 2015 +0200 MDEV-7754 : innodb assert "array->n_elems < array->max_elems" on a huge blob update Problem was that static array was used for storing thread mutex sync levels. Fixed by using std::vector instead. Does not contain test case to avoid too big memory/disk space usage on buildbot VMs.

          People

            jplindst Jan Lindström (Inactive)
            serg Sergei Golubchik
            Votes:
            0 Vote for this issue
            Watchers:
            3 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.