Bug #27993 Falcon: crash if rollback while other job is waiting
Submitted: 20 Apr 2007 23:09 Modified: 26 Apr 2007 11:02
Reporter: Peter Gulutzan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S2 (Serious)
Version:6.0.0-alpha-debug OS:Linux (SUSE 10 64-bit)
Assigned to: Jim Starkey CPU Architecture:Any

[20 Apr 2007 23:09] Peter Gulutzan
Description:
I create a Falcon table.
I select, then I insert a value.
On another connection, I try to select, and am blocked.
On the first connection, I rollback.
Crash.

ChangeSet@1.2629.1.1, 2007-04-20

How to repeat:
There are two mysql client connections, T1 and T2.

On T1, say:
use test
drop table t;
create table t (s1 int) engine=falcon;
set @@autocommit=0;
select * from t where s1 = 6;
insert into t values (6);

On T2, say:
use test
set @@autocommit=0;
update t set s1 = 5 where s1 = 6; /* this hangs. */

On T1, say:
rollback;
[21 Apr 2007 14:27] Hakan Küçükyılmaz
Verified as described.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1158465888 (LWP 4873)]
0x000000000086dc11 in Transaction::getRelativeState (this=0x2aaaab02d008, record=0x0) at Transaction.cpp:887
887             return getRelativeState(record->getTransaction(), record->getTransactionId());

(gdb) bt
#0  0x000000000086dc11 in Transaction::getRelativeState (this=0x2aaaab02d008, record=0x0)
    at Transaction.cpp:887
#1  0x0000000000864da1 in Table::fetchForUpdate (this=0x2aaaab087a68, transaction=0x2aaaab02d008,
    source=0x2aaaab0884a0) at Table.cpp:2821
#2  0x0000000000853aae in StorageDatabase::nextRow (this=0x2aaaab049fa8, storageTable=0x2aaaaafa7b98,
    recordNumber=0, lockForUpdate=true) at StorageDatabase.cpp:266
#3  0x0000000000858c0b in StorageTable::next (this=0x2aaaaafa7b98, recordNumber=0, lockForUpdate=true)
    at StorageTable.cpp:122
#4  0x000000000084d4dc in NfsStorageTable::rnd_next (this=0x104c778, buf=0x104c9b0 "�") at ha_falcon.cpp:470
#5  0x0000000000778ea9 in rr_sequential (info=0x450ca7b0) at records.cc:363
#6  0x0000000000712bf6 in mysql_update (thd=0x1053fd8, table_list=0x105e4e0, fields=@0x1055a68,
    values=@0x1055e18, conds=0x105eb10, order_num=0, order=0x0, limit=18446744073709551615,
    handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:466
#7  0x000000000067895f in mysql_execute_command (thd=0x1053fd8) at sql_parse.cc:2536
[21 Apr 2007 14:43] 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/25059

ChangeSet@1.2634, 2007-04-21 16:43:05+02:00, hakank@lu0011.wdf.sap.corp +3 -0
  Added test case for bug #27993. Test fails
  does not fail always. Looks like a timing issue.
[22 Apr 2007 14:28] Jim Starkey
Missing case in "benchmark mode"
[22 Apr 2007 16:10] 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/25074

ChangeSet@1.2638, 2007-04-22 18:10:17+02:00, hakank@lu0011.wdf.sap.corp +2 -0
  Bug#27993 is fixed.
[22 Apr 2007 16:14] Hakan Küçükyılmaz
falcon_bug_27993.test passes now:

=======================================================
Starting Tests in the 'main' suite

TEST                           RESULT         TIME (ms)
-------------------------------------------------------

falcon_bug_27993               [ pass ]            342
-------------------------------------------------------
Stopping All Servers
All 1 tests were successful.
The servers where restarted 1 times
Spent 0.342 seconds actually executing testcases
[26 Apr 2007 11:02] MC Brown
A note has been added to the 6.0.0 changelog.