Bug #59061 innodb_monitor crashes the server sporadically
Submitted: 20 Dec 2010 16:14 Modified: 7 Dec 2011 16:04
Reporter: Alexander Nozdrin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:5.6 OS:Any
Assigned to: Jimmy Yang CPU Architecture:Any

[20 Dec 2010 16:14] Alexander Nozdrin
Description:
101220 15:11:54  InnoDB: Assertion failure in thread 6 in file /tmp/pb2/build/sb_3-2695107-1292844503.7/mysql-5.6.1-m5/storage/innobase/include/buf0buf.ic line 610
InnoDB: Failing assertion: block->page.buf_fix_count > 0
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-recovery.html
InnoDB: about forcing recovery.
InnoDB: Thread 311 stopped in file /tmp/pb2/build/sb_3-2695107-1292844503.7/mysql-5.6.1-m5/storage/innobase/srv/srv0mon.c line 486
....
Thread pointer: 0x0

How to repeat:
Happened in trunk-stage (a clone of trunk-bugfixing).
Log: http://pb2.norway.sun.com/?action=archive_download&archive_id=2695854&pretty=please
[21 Dec 2010 2:14] Jimmy Yang
We could do buffer page read/write activity monitoring if the monitor is turned on. In DEBUG version, there is an assertion "ut_a(block->page.buf_fix_count > 0)" in buf_block_get_frame() that asserts buf_fix_count > 0. However, we do the monitoring after IO complete, so it is possible the buf_fix_count is zero, thus the failure. Fix is to skip the assertion, and directly get the frame.
[21 Dec 2010 9:38] Alexander Nozdrin
Pushed to mysql-trunk-innodb, merged to mysql-trunk-bugfixing.