Failing assertion: page_get_n_recs(page) > 1

Bug #841621 reported by Laurent Bigonville
32
This bug affects 4 people
Affects Status Importance Assigned to Milestone
MySQL Server
Unknown
Unknown
Percona Server moved to https://jira.percona.com/projects/PS
Triaged
High
Unassigned
5.1
Won't Fix
High
Unassigned
5.5
Triaged
High
Unassigned
5.6
Triaged
High
Unassigned

Bug Description

Hi,

When upgrading from mysql (vanilla) 5.1.54 to mysql vanilla or perconna 5.5 we get this assertion error:

110509 17:50:44 InnoDB: Assertion failure in thread 139847062464272 in file ibuf0ibuf.c
line 4196
InnoDB: Failing assertion: page_get_n_recs(page) > 1
InnoDB: We intentionally generate a memory trap.

After this error, the database is crashing in loop and never comes back online.

Reverting to 5.1.54 doesn't help, the DB is still crashing

More information on http://bugs.mysql.com/bug.php?id=61104

Revision history for this message
Laurent Bigonville (bigon) wrote :

0x7ca7c9 my_print_stacktrace + 57
0x4ff7e9 handle_segfault + 889
0x7fed662505d0 _end + 1696332848
0x7fed65475945 _end + 1681805221
0x7fed65476f21 _end + 1681810817
0x90b591 ibuf_merge_or_delete_for_page + 5777
0x8b2c55 buf_page_io_complete + 1157
0x8e90c1 fil_aio_wait + 545
0x8649e0 io_handler_thread + 80
0x7fed662485f0 _end + 1696300112
0x7fed6551784d _end + 1682468525

Stewart Smith (stewart)
Changed in percona-server:
importance: Undecided → High
Changed in percona-server:
assignee: nobody → Valentine Gostev (longbow)
tags: added: cr i19559
Changed in percona-server:
assignee: Valentine Gostev (longbow) → Alexey Kopytov (akopytov)
Changed in percona-server:
assignee: Alexey Kopytov (akopytov) → Patrick Crews (patrick-crews)
Revision history for this message
yinfeng (yinfeng-zwx) wrote :

changelog for mysql5.5.21 :

InnoDB Storage Engine: The MySQL server could halt with an assertion error:

InnoDB: Failing assertion: page_get_n_recs(page) > 1
Subsequent restarts could fail with the same error. The error occurred during a purge operation involving the InnoDB change buffer. The workaround was to set the configuration option innodb_change_buffering=inserts. (Bug #13413535, Bug #61104)

Revision history for this message
yinfeng (yinfeng-zwx) wrote :

while it's not safe to use this new future , i think it's better to change defaults value of innodb_change_buffering=inserts

a simple fix

Changed in percona-server:
assignee: Patrick Crews (patrick-crews) → nobody
Revision history for this message
Alexey Kopytov (akopytov) wrote :
Revision history for this message
Alexey Kopytov (akopytov) wrote :

http://bugs.mysql.com/bug.php?id=66819 will be fixed upstream in 5.1.67, 5.5.29, 5.6.8, 5.7.0.

Revision history for this message
yinfeng (yinfeng-zwx) wrote :

Is there any separate patch to fix this bug?

Revision history for this message
Alexey Kopytov (akopytov) wrote :

To my knowledge, the fix is not publicly available yet.

Revision history for this message
yinfeng (yinfeng-zwx) wrote :

The upstream bug#66819 was marked as closed.

@Alexey Kopytov , I had read the related code of MySQL5.5.29. It seems MySQL5.5.29 didn't fix all potential bug you had pointed out.

IBUF_OP_DELETE operation in ibuf_merge_or_delete_for_page() still commit mtr before calling ibuf_delete_rec().

Related:
http://bazaar.launchpad.net/~mysql/mysql-server/5.5/revision/3979

Revision history for this message
Raghavendra D Prabhu (raghavendra-prabhu) wrote :

@yinfeng,

The latest comment in 66819 reiterates that.

So, it looks like purge buffering is still not crash safe.

tags: added: innodb
Revision history for this message
Bart Verwilst (verwilst) wrote :

I have added several comments in the mysql bugtracker as a followup.. Using 5.5.30, i'm still seeing a lot of corruption issues.

Revision history for this message
Alexey Kopytov (akopytov) wrote :

Yes, the problem is still there for innodb_change_buffering values 'all' or 'purges'.

Revision history for this message
Raghavendra D Prabhu (raghavendra-prabhu) wrote :

5.5.31 seems to have fixed for purge as well

"
InnoDB: If the MySQL server halted at a precise moment when a purge operation was being applied from the change buffer, the operation could be incorrectly performed again during the next restart. A workaround was to set the configuration option innodb_change_buffering=changes, to turn off change buffering for purge operations. (Bug #16183892, Bug #14636528)
"

tags: added: i48765
Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-501

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.