Bug #27428 Falcon: crash with two connections and use database
Submitted: 25 Mar 2007 19:14 Modified: 13 Apr 2007 9:03
Reporter: Peter Gulutzan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:'5.2.4-falcon-alpha-debug OS:Linux (SUSE 10.0 / 64-bit)
Assigned to: CPU Architecture:Any

[25 Mar 2007 19:14] Peter Gulutzan
Description:
If I am doing something to a Falcon table,
and I use 'use database' on another connection,
crash.

How to repeat:
There must be two connections, T1 and T2.

On T1, start a mysql client and say:

delimiter //
use test
create database d//
use d
create table t (s1 int) engine=falcon//
create index i on t (s1)//
create procedure p ()
begin
  declare v int default 0;
  while v < 50000 do
    if v mod 100 = 0 then select v; end if;
    insert into t values (v);
    set v = v + 1;
    end while;
  end//
call p()//

While this procedure is running, On T2,
start a mysql client and say:

use d

At this point mysqld will crash.
[25 Mar 2007 19:27] Hakan Küçükyılmaz
Verified as described. Backtrace is:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1146739632 (LWP 5354)]
0x084346d7 in NfsStorageTable::open (this=0x89f2240, name=0x89e7080 "./d/t", mode=2, test_if_locked=2)
    at ha_falcon.cpp:384
384                     storageTable = storageConnection->getStorageTable(storageShare);
(gdb) bt
#0  0x084346d7 in NfsStorageTable::open (this=0x89f2240, name=0x89e7080 "./d/t", mode=2, test_if_locked=2)
    at ha_falcon.cpp:384
#1  0x08370233 in handler::ha_open (this=0x89f2240, table_arg=0x89d1e40, name=0x89e7080 "./d/t", mode=2,
    test_if_locked=2) at handler.cc:1528
#2  0x082c3daf in open_table_from_share (thd=0x89d0808, share=0x89e6e28, alias=0x89f42f0 "t", db_stat=39,
    prgflag=44, ha_open_flags=0, outparam=0x89d1e40, is_create_table=false) at table.cc:1535
#3  0x082bd42f in open_unireg_entry (thd=0x89d0808, entry=0x89d1e40, table_list=0x4459d15c,
    alias=0x89f42f0 "t", cache_key=0x4459cbde "d", cache_key_length=4, mem_root=0x4459cce0, flags=0)
    at sql_base.cc:2830
#4  0x082bf3f9 in open_table (thd=0x89d0808, table_list=0x4459d15c, mem_root=0x4459cce0, refresh=0x4459cd23,
    flags=0) at sql_base.cc:2214
#5  0x082bfd32 in open_tables (thd=0x89d0808, start=0x4459cd94, counter=0x4459cd84, flags=0)
    at sql_base.cc:3111
#6  0x082c00e5 in open_normal_and_derived_tables (thd=0x89d0808, tables=0x4459d15c, flags=0)
    at sql_base.cc:3453
#7  0x0839f123 in mysqld_list_fields (thd=0x89d0808, table_list=0x4459d15c, wild=0x89f42f8 "")
    at sql_show.cc:780
#8  0x08283a8d in dispatch_command (command=COM_FIELD_LIST, thd=0x89d0808, packet=0x89ec283 "",
    packet_length=3) at sql_parse.cc:991
#9  0x082846a3 in do_command (thd=0x89d0808) at sql_parse.cc:662
#10 0x082728b2 in handle_one_connection (arg=0x89d0808) at sql_connect.cc:1089
#11 0x40284297 in start_thread () from /lib/tls/libpthread.so.0
#12 0x4021937e in clone () from /lib/tls/libc.so.6
#13 0x4459dbb0 in ?? ()
[6 Apr 2007 15:47] Hakan Küçükyılmaz
Can't repeat with latest change set 1.2559, 2007-04-06.

While procedure p() is running on T1 I do following on T2:
[17:45] root@test>use d
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

No crash.

Best regards,

Hakan
[9 Apr 2007 18:55] Peter Gulutzan
I confirm that I can't make it crash now.
[13 Apr 2007 9:03] MC Brown
A note has been added to the 5.2.4 changelog.
[10 Jul 2007 19:09] MC Brown
This bug report entry has been moved to the 6.0.0 Falcon changelog.