Bug #40170 Dubious values in Falcon debug output
Submitted: 20 Oct 2008 10:40 Modified: 12 Nov 2008 14:09
Reporter: Philip Stoev Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S2 (Serious)
Version:6.0-falcon-team OS:Any
Assigned to: Sergey Vojtovich CPU Architecture:Any
Tags: F_ERROR HANDLING

[20 Oct 2008 10:40] Philip Stoev
Description:
When running a stress test with falcon page size 32K , the following is printed under falcon-debug-mask=2:

# 01:04:59 899.  page 0, line 0, space -32768
# 01:04:59 900.  page 0, line 0, space -1222
...
# 01:04:59 1222.  page 0, line 0, space -32768

Whatever this is , it does not look good.

This test eventually crashes with corruption in the Record Locator Page.

How to repeat:
runall.pl \ 
--basedir=/path/to/6.0-falcon \ 
--reporters=Deadlock,ErrorLog,Backtrace,Recovery,WinPackage \ 
--mysqld=--loose-falcon-lock-wait-timeout=1 \ 
--mysqld=--loose-falcon-debug-mask=2 \ 
--engine=falcon \ 
--grammar=conf/falcon_pagesize.yy \ 
--mysqld=--falcon-page-size=32K \ 
--gendata=conf/falcon_pagesize32K.zz \ 
--queries=100000 \ 
--duration=1200

Suggested fix:
If those values are indeed invalid, please ASSERT() directly instead of printing them. This may help pin-point the problem with the Record Locator Page at an earlier phase of the execution of the test.
[12 Nov 2008 14:09] Sergey Vojtovich
These values are correctly reported by RecordLocatorPage::corrupt(), when the mask includes LogDebug mode.

As for an assertion - there already is one, which is triggered immediately after it outputs these lines:
void RecordLocatorPage::corrupt(void)
{
        Log::debug("Corrupt RecordLocatorPage space management structure\n");
        printPage();
        ASSERT(false);
}

As there is nothing to fix here, closing as Not a bug. Feel free to reopen if you think there is still some work to do.