List:Falcon Storage Engine« Previous MessageNext Message »
From:Olav Sandstaa Date:January 16 2009 10:27am
Subject:Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"
View as plain text  
Hi Chris,

Just in case this is of interest: I filed a bug report for the same 
assert yesterday since it happens frequently when running the 
falcon_backlog test (see Bug #42131 "falcon_backlog test crashes in 
Record::getEncodedValue"). The stack trace is different but the last 
messages written to the log file before the assert happens is usually 
related to chill/thaw. One example:

755: Record thaw (fetch): table 24, 2 records, 2240 bytes
757: Record thaw (fetch): table 24, 2 records, 1640 bytes
760: Record thaw (fetch): table 24, 2 records, 1391 bytes
826: Record thaw (fetch): table 24, 2 records, 1911 bytes
828: Record thaw (fetch): table 24, 1 records, 1295 bytes
[Falcon] Error: assertion (vector[index] < size) failed at line 668 in file Record.cpp

090115 17:20:58 - mysqld got signal 6 ;


Olav


Christopher Powers wrote:
> Kevin,
>
> This is the reopened chill/thaw stress test bug.
>
> I can easily reproduce an assert in Record::getEncodedValue() that 
> always occurs during a scavenge/record pruning (stack attached.)
>
> At the time of the assert, the record state is 'recChilled', so that 
> explains why getEncodedValue() fails. It appears that the record 
> 'oldie' in Index::duplicateKey() gets chilled while it's being accessed.
>
> Note that hasRecord() should have thawed the record. I added a second 
> thaw to verify this, but the breakpoint never hit, so I think the 
> record is being chilled during makeKey().
>
>
> bool Index::duplicateKey(IndexKey *key, Record * record)
> {
>   for (Record *oldie = record; oldie; oldie = oldie->getPriorVersion())
>     if (oldie->hasRecord())  <<<< will thaw record
>       {
>       IndexKey oldKey(this);
>            
>       if (oldie->state == recChilled)
>         oldie->thaw();     <<<< breakpoint never hit
>                
>       makeKey (oldie, &oldKey); <<<< assertion here--chill< during
> 
> makeKey??
>
>       if (oldKey.isEqual(key))
>         return true;
>       }
>   return false;
> }
>

Thread
Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan
  • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan
  • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Olav Sandstaa16 Jan
    • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan