Bug #33492 Falcon blob corruption on restart
Submitted: 23 Dec 2007 13:08 Modified: 5 May 2008 14:46
Reporter: Philip Stoev Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:6.0.4 OS:Any
Assigned to: Jim Starkey CPU Architecture:Any

[23 Dec 2007 13:08] Philip Stoev
Description:
Falcon returns bad blob data after restart.

Test case will come shortly.

How to repeat:
1. Create a table with a blob field and update it.
2. Restart the server.
3. SELECT from the blob -- you will get corrupted data.
[23 Dec 2007 13:26] Philip Stoev
Pre-restart part of bug 33492

Attachment: bug33492-part1.test (application/octet-stream, text), 1.44 KiB.

[23 Dec 2007 13:26] Philip Stoev
Post-restart part of bug 33492

Attachment: bug33492-part2.test (application/octet-stream, text), 19 bytes.

[23 Dec 2007 13:26] Philip Stoev
Include file for test case of bug 33492

Attachment: 64K.inc (text/plain), 64.03 KiB.

[23 Dec 2007 13:29] Philip Stoev
Please find attached the test case for this bug. To run it, please follow the following procedure:

1. Manually start a fresh 6.0.4 server
2. Run the first part of the test case:
 perl mysql-test-run.pl --record --extern bug33492-part1
3. Shutdown and restart server manually using "mysqladmin shutdown"
2. Run the second part of the test case:
 perl mysql-test-run.pl --extern bug33492-part2

Test will fail, and corrupted data will be visible in the output.
[23 Dec 2007 13:49] Philip Stoev
Bug is also present in 6.0.3
[26 Dec 2007 18:53] Jim Starkey
I have been unable to reproduce this on a 4 processor, AMD64 SuSE 10.2
system.

Could somebody send me a zip file of data directory after the failure.  I
would also appreciate the actual output of the failure.
[26 Dec 2007 19:12] Philip Stoev
I am able to verify this bug with the latest BK tree.

Once you run the sequence of steps, you may see that main.bug33492-part2 may pass. Please go to mysql-test/r/bug33492-part2.result and see the garbage that is being returned.

[philips@philips mysql-test]$ uname -a
Linux philips 2.6.21-1.3194.fc7 #1 SMP Wed May 23 22:35:01 EDT 2007 i686 i686 i386 GNU/Linux

Fedora release 7 (Moonshine)
Kernel \r on an \m

vmware player with 385MB of memory.
[26 Dec 2007 19:16] Philip Stoev
Corrupted datadir uploaded to  ftp://ftp.mysql.com/pub/mysql/upload/bug33492.zip
[26 Dec 2007 19:44] Philip Stoev
Bug is also reproducible on ia64 using the 32-bit binary from

production.mysql.com:/data0/mysqldev/my/build-200712031732-6.0.4-alpha/mysql-6.0.4-alpha-build/dist/packages/mysql-6.0.4-alpha-linux-i686-glibc23.tar.gz
[26 Dec 2007 19:50] Philip Stoev
ftp://ftp.mysql.com/pub/mysql/upload/bug33492-before.zip

This archive contains the data directory after server shutdown, however before server restart.
[27 Dec 2007 16:20] Jim Starkey
Database was actually ok.  Problems was with Falcon meta-data handling
during startup.
[28 Dec 2007 8:27] Philip Stoev
I can confirm that this bug is no longer present when using a patched binary from

/data0/mysqldev/my/mysql-6.0.4-alpha-p1-build/dist/packages/mysql-6.0.4-alpha-p1-linux-i686-glibc23.tar.gz

Even if the blob was inserted in a previous 6.0.4 build, the latest 6.0.4 build can read it correctly, which is consistent with Mr. Sharkey's description of the cause of this bug.
[21 Feb 2008 15:11] Kevin Lewis
Patch is in mysql-6.0-release version 6.0.4
[5 May 2008 14:46] Paul DuBois
Noted in 6.0.4 changelog.

After a server restart, Falcon mishandled metadata, resulting in
apparent corruption of BLOB data.