Bug #26828 Falcon: crash with two connections and partitions
Submitted: 3 Mar 2007 22:03 Modified: 20 Apr 2007 14:49
Reporter: Peter Gulutzan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S2 (Serious)
Version:5.2.4-falcon-alpha-debug OS:Linux (SUSE 10.0 / 64-bit, suse9.3 x86)
Assigned to: CPU Architecture:Any
Tags: assertion, crash, falcon, partition

[3 Mar 2007 22:03] Peter Gulutzan
Description:
I create a Falcon table with one partition.
I insert one row.
I create a procedure which updates the row repeatedly.
I run the procedure on two different connections.
Crash.

How to repeat:
There should be two connections with mysql client, called T1 and T2.

On T1, say:

delimiter //
create database y//
use y
create table tg (s1 int) engine=falcon partition by list (s1) (partition p1 values in (1))//
insert into tg values (1)//
create procedure pg () begin declare v int default 0; while v < 100000 do if v mod 100 = 0 then select v; end if; update tg set s1 = 1; set v = v + 1; end while; end//
call pg()//

On T2, while T1 is still running, say:
use y
call pg();

The crash should occur within 1 second.
[4 Mar 2007 11:33] MySQL Verification Team
verified on todays bk source.

Version: '5.2.4-falcon-alpha-debug'  socket: '/tmp/mysql.sock'  port: 3306  yes
database open failed: can't open file "/home/sbester/server/5.2/mysql-5.2.4-falcon-alpha-linux-i686/data/y.fts": No such file or directory (2)
mysqld: handler.h:1083: int handler::ha_rnd_init(bool): Assertion `inited==NONE || (inited==RND && scan)' failed.
mysqld got signal 6;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=8388572
read_buffer_size=131072
max_used_connections=2
max_connections=151
threads_connected=2
It is possible that mysqld could use up to 
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 336762 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

thd: 0x8e1fce8
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
Cannot determine thread, fp=0x42a42674, backtrace may not be correct.
Stack range sanity check OK, backtrace follows:
0x8203f87 handle_segfault + 417
0xffffe410 _end + -142562016
0x40155b75 _end + 932586629
0x4014d903 _end + 932553235
0x82f1cb5 _ZN12ha_partition8rnd_initEb + 1059
0x82e006c _Z16init_read_recordP14st_read_recordP3THDP8st_tableP10SQL_SELECTib + 540
0x828db97 _Z12mysql_updateP3THDP13st_table_listR4ListI4ItemES6_PS4_jP8st_ordery15enum_duplicatesb + 4221
0x8220270 _Z21mysql_execute_commandP3THD + 9450
0x8366f79 _ZN13sp_instr_stmt9exec_coreEP3THDPj + 17
0x8366bbb _ZN13sp_lex_keeper23reset_lex_and_exec_coreEP3THDPjbP8sp_instr + 445
0x8366e10 _ZN13sp_instr_stmt7executeEP3THDPj + 328
0x8363404 _ZN7sp_head7executeEP3THD + 1386
0x8364b6d _ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE + 1387
0x8223bb3 _Z21mysql_execute_commandP3THD + 24109
0x8227431 _Z11mysql_parseP3THDPcj + 353
0x821c8a1 _Z16dispatch_command19enum_server_commandP3THDPcj + 2077
0x821c079 _Z10do_commandP3THD + 603
0x821b166 handle_one_connection + 900
0x40250aa7 _end + 933614519
0x401e6c2e _end + 933180734
New value of fp=(nil) failed sanity check, terminating stack trace!
Please read http://dev.mysql.com/doc/mysql/en/using-stack-trace.html and follow instructions on how to resolve the stack trace. Resolved
stack trace is much more helpful in diagnosing the problem, so please do 
resolve it
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 0x8e54850 = update tg set s1 = 1
thd->thread_id=1
The manual page at http://www.mysql.com/doc/en/Crashing.html contains
information that should help you find out what is causing the crash.
Fatal signal 11 while backtracing

Number of processes running now: 0
070304 13:17:45  mysqld restarted
070304 13:17:45  InnoDB: Database was not shut down normally!
[4 Mar 2007 14:21] Hakan Küçükyılmaz
Added test case falcon_bug_26828.test and pushed to mysql-5.1-falcon tree.

Regards,

Hakan
[14 Apr 2007 2:10] Hakan Küçükyılmaz
Test is passing now for me

Test(s) which will be run though they are marked as disabled:
  falcon_bug_26828     : Bug#26828 2007-03-04 hakank Currently failing

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

falcon_bug_26828               [ pass ]           1141
-------------------------------------------------------
Stopping All Servers
All 1 tests were successful.
The servers where restarted 1 times
Spent 1.141 seconds actually executing testcases
[15 Apr 2007 20:50] Peter Gulutzan
I confirm that I can no longer see a crash with the latest build.
[20 Apr 2007 14:49] MC Brown
A note has been added to the 5.2.4 changelog.
[10 Jul 2007 19:08] MC Brown
This bug report entry has been moved to the 6.0.0 Falcon changelog.