Bug #39694 | Crash in StorageTable::setRecord during falcon_chill_thaw test | ||
---|---|---|---|
Submitted: | 27 Sep 2008 14:53 | Modified: | 13 Dec 2008 9:03 |
Reporter: | John Embretsen | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S1 (Critical) |
Version: | 6.0-falcon-team (6.0.8a) | OS: | Any |
Assigned to: | Christopher Powers | CPU Architecture: | Any |
Tags: | F_CHILL THAW, pb2, pushbuild, test failure |
[27 Sep 2008 14:53]
John Embretsen
[27 Sep 2008 15:01]
John Embretsen
Attached full test output (log) from failing test case.
Attachment: falcon_online_alter_log_bug39694.txt (text/plain), 66.25 KiB.
[27 Sep 2008 15:17]
John Embretsen
Test name in previous two comments (as well as log file name) should be "falcon_chill_thaw", not "falcon_online_alter". Sorry for the mistake.
[27 Sep 2008 15:40]
John Embretsen
gdb stack trace indicates that the crash happened in Record::getEncodedRecord (line 743). Program terminated with signal 11, Segmentation fault. #0 0x00985402 in __kernel_vsyscall () #0 0x00985402 in __kernel_vsyscall () #1 0x0089f067 in pthread_kill () from /lib/libpthread.so.0 #2 0x087e9256 in my_write_core (sig=11) at stacktrace.c:307 #3 0x082ae7d2 in handle_segfault (sig=11) at mysqld.cc:2660 #4 <signal handler called> #5 0x085bf79c in Record::getEncodedRecord (this=0xa6274dc0) at Record.cpp:743 #6 0x08539a59 in StorageTable::setRecord (this=0xa662ca78, newRecord=0xa6274dc0, locked=true) at StorageTable.cpp:348 #7 0x08534007 in StorageDatabase::nextRow (this=0xb7067130, storageTable=0xa662ca78, recordNumber=1027, lockForUpdate=true) at StorageDatabase.cpp:306 #8 0x0853a024 in StorageTable::next (this=0xa662ca78, recordNumber=1027, lockForUpdate=true) at StorageTable.cpp:158 #9 0x08525398 in StorageInterface::rnd_next (this=0xa76ebc0, buf=0xa76ed88 "") at ha_falcon.cpp:613 #10 0x083d3207 in rr_sequential (info=0xa7e7cf7c) at records.cc:390 #11 0x0836a19f in mysql_update (thd=0xa5fa028, table_list=0xa6c04f00, fields=@0xa5fb5e0, values=@0xa5fb808, conds=0xa6c055a8, order_num=0, order=0x0, limit=18446744073709551344, handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:573 #12 0x082c1713 in mysql_execute_command (thd=0xa5fa028) at sql_parse.cc:2865 #13 0x082c7565 in mysql_parse (thd=0xa5fa028, inBuf=0xa6c04bd8 "UPDATE E AS X SET `int_key` = 130 WHERE X . `int_nokey` < 207", length=61, found_semicolon=0xa7e7de80) at sql_parse.cc:5578 #14 0x082c8520 in dispatch_command (command=COM_QUERY, thd=0xa5fa028, packet=0xa30b371 "UPDATE E AS X SET `int_key` = 130 WHERE X . `int_nokey` < 207", packet_length=61) at sql_parse.cc:1001 #15 0x082c97eb in do_command (thd=0xa5fa028) at sql_parse.cc:688 #16 0x082b71ad in handle_one_connection (arg=0xa5fa028) at sql_connect.cc:1153 #17 0x0089a45b in start_thread () from /lib/libpthread.so.0 #18 0x007f1c4e in clone () from /lib/libc.so.6 Using host libthread_db library "/lib/libthread_db.so.1". This also occurs on Solaris 10 32-bit SPARC platform in Pushbuild 2.
[24 Oct 2008 5:09]
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/56961 2880 Christopher Powers 2008-10-24 Bug#36631,"Assertion in SerialLogControl::nextRecord" Bug#38541,"Falcon RecordVersion::thaw assertion """"bytesRestored > 0 || data.record == NULL""" Bug#38567,"Falcon crash in Record::getEncodedRecord at Record.cpp:743" Bug#38569,"Falcon assertion in SRLUpdateIndex::thaw : type == srlUpdateIndex" Bug#39694,"Crash in StorageTable::setRecord during falcon_chill_thaw test" Bug#39695,"Crash in SRLUpdateRecords::thaw during falcon_chill_thaw test" Bug#39696,"Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" Fix 1 of 3 for chill/thaw bugs. Modified Record::hasRecord() to thaw if necessary, removed redundant record thaws, added exception handling
[24 Oct 2008 5:38]
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/56962 2881 Christopher Powers 2008-10-24 Bug#36631,"Assertion in SerialLogControl::nextRecord" Bug#38541,"Falcon RecordVersion::thaw assertion """"bytesRestored > 0 || data.record == NULL""" Bug#38567,"Falcon crash in Record::getEncodedRecord at Record.cpp:743" Bug#38569,"Falcon assertion in SRLUpdateIndex::thaw : type == srlUpdateIndex" Bug#39694,"Crash in StorageTable::setRecord during falcon_chill_thaw test" Bug#39695,"Crash in SRLUpdateRecords::thaw during falcon_chill_thaw test" Bug#39696,"Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" Fix 2 of 3 for chill/thaw bugs. Synchronized record thaw operations using a pool of sync objects in the associated table. Record chill operations do not need to be synchronized because chills are performed in one place, and only by the active Transaction.
[26 Oct 2008 15:55]
Kevin Lewis
Two patches approved to problems with concurent thaws. 1) enhance hasRecord to thaw when needed. 2) serialize thaws with a hash table of SyncOjects.
[28 Oct 2008 8:10]
Bugs System
Pushed into 6.0.8-alpha (revid:cpowers@mysql.com-20081024053538-6y1ma8lydl93oxza) (version source revid:alik@mysql.com-20081028074021-o49ijs3x4pxj1gbm) (pib:5)
[13 Dec 2008 9:03]
MC Brown
No documentation needed (internal change only)