Bug #42448 assertion in IO::writePage in recovery
Submitted: 29 Jan 2009 13:28 Modified: 7 May 2009 16:58
Reporter: Vladislav Vaintroub Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S3 (Non-critical)
Version:mysql-60-falcon-team OS:Any
Assigned to: Vladislav Vaintroub CPU Architecture:Any
Tags: F_RECOVERY

[29 Jan 2009 13:28] Vladislav Vaintroub
Description:
Falcon recovery can assert in IO::writePage with 
(bdb->pageNumber != HEADER_PAGE || ((Page*)(bdb->buffer))->pageType == PAGE_header) 

The reason for the error is incorrect processing of SRLSection record, when SRLSectionPage::pageNumber is 0

How to repeat:
falcon_recovery random query generator test can trigger this ASSERT

Suggested fix:
Do not create page 0 in redoSectionPage
[29 Jan 2009 13:31] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/64478

2985 Vladislav Vaintroub	2009-01-29
      Bug #42448 assertion in IO::writePage in recovery
      
      Problem:
      If a log record SRLSectionPage is processed , redoSectionPage assumes it needs to create a new Section page. It is not always true, pageNumber 0 indicates section will be deleted. Currently, redoSectionPage will create a new section page 0 and mark it dirty. However, page number 0 is  reserved for tablespace header, and IO::writePage has corresponding assertion for it. recovery will crash in this assertion ,once newly created  section page 0 is written to disk.
      
      Fix : do not create section page 0 in recovery.
[13 Feb 2009 7:23] Bugs System
Pushed into 6.0.10-alpha (revid:alik@sun.com-20090211182317-uagkyj01fk30p1f8) (version source revid:vvaintroub@mysql.com-20090129133026-grg004t3x1bxa602) (merge vers: 6.0.10-alpha) (pib:6)
[7 May 2009 16:58] MC Brown
Internal/test fix. No changelog entry required.