| Bug #23220 | Falcon: Setting falcon_page_size to non-default size crashes Falcon | ||
|---|---|---|---|
| Submitted: | 12 Oct 2006 15:59 | Modified: | 19 Nov 2007 22:19 |
| Reporter: | Hakan Küçükyılmaz | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Falcon storage engine | Severity: | S2 (Serious) |
| Version: | 5.2,5.2.4-falcon-alpha-debug | OS: | Linux (Linux) |
| Assigned to: | Hakan Küçükyılmaz | CPU Architecture: | Any |
[12 Oct 2006 16:11]
Hakan Küçükyılmaz
Crashes also with 8k
(gdb) run --gdb --user=mysql --falcon_page_size=8192
Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1263528880 (LWP 9340)]
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0x40181541 in raise () from /lib/tls/libc.so.6
#2 0x08426a9a in Error::debugBreak () at Error.cpp:93
#3 0x08426af7 in Error::error (string=0x87285f4 "page %d wrong page type, expected %d got %d\n")
at Error.cpp:70
#4 0x08498bce in Cache::fetchPage (this=0x402f8c80, dbb=0x402f8720, pageNumber=31, pageType=PAGE_inventory,
lockType=Exclusive) at Cache.cpp:183
#5 0x0841ded2 in Dbb::fetchPage (this=0x402f8720, pageNumber=31, pageType=PAGE_inventory,
lockType=Exclusive) at Dbb.cpp:196
#6 0x0844e820 in PageInventoryPage::allocPage (dbb=0x402f8720, pageType=PAGE_sections, transId=1)
at PageInventoryPage.cpp:77
#7 0x0841deef in Dbb::allocPage (this=0x402f8720, pageType=PAGE_sections, transId=1) at Dbb.cpp:201
#8 0x0846667e in Section::createSection (dbb=0x402f8720, transId=1) at Section.cpp:98
#9 0x0841dfa8 in Dbb::createSection (this=0x402f8720, transId=1) at Dbb.cpp:225
#10 0x08414938 in Database::createSection (this=0x4c6f8028, transaction=0x402fddd0) at Database.cpp:886
#11 0x083ed353 in Table::create (this=0x4030855c, tableType=0x8726c54 "SYSTEM TABLE", transaction=0x402fddd0)
at Table.cpp:200
#12 0x0848a3d9 in Nfs::Statement::createTable (this=0x40306628, syntax=0x403084fc) at Statement.cpp:218
#13 0x0848a4f5 in Nfs::Statement::upgradeTable (this=0x40306628, syntax=0x403084fc) at Statement.cpp:1130
#14 0x0848b49d in Nfs::Statement::executeDDL (this=0x40306628) at Statement.cpp:689
[26 Jan 2007 16:48]
Ann Harrison
Allowing page sizes of 1K, 2K, 4K, 8K, 16K, and 32K. Changed the switch handling to accept anything between 0 - 32K. Zero and no switch default to 4K. Otherwise we round up to the next acceptable size. Changed a couple of short to unsigned short or int to allow 32K size.
[8 Feb 2007 7:09]
Calvin Sun
pushed into 5.2.1, and already documented.
[8 Feb 2007 18:54]
Hakan Küçükyılmaz
I could not verify the fix on Linux 64-bit, change set 1.2424.1.1, 2007-02-08.
mysql> show variables like '%page%';
+----------------------------+---------+
| Variable_name | Value |
+----------------------------+---------+
| falcon_page_cache_size | 4194304 |
| falcon_page_size | 32768 |
| innodb_max_dirty_pages_pct | 90 |
| large_page_size | 0 |
| large_pages | OFF |
+----------------------------+---------+
5 rows in set (0.01 sec)
mysql> create table t1 (a int) engine falcon;
ERROR 2013 (HY000): Lost connection to MySQL server during query
Backtrace is:
#0 0x0000002a95bf0479 in raise () from /lib64/tls/libc.so.6
#1 0x0000000000863dfe in Error::debugBreak () at Error.cpp:93
#2 0x0000000000863d85 in Error::error (string=0xbbf6d8 "page %d wrong page type, expected %d got %d\n") at Error.cpp:70
#3 0x00000000008e67fd in Cache::fetchPage (this=0x2a96453350, dbb=0x2a96452ce8, pageNumber=31, pageType=PAGE_inventory, lockType=Exclusive)
at Cache.cpp:223
#4 0x000000000085b3ad in Dbb::fetchPage (this=0x2a96452ce8, pageNumber=31, pageType=PAGE_inventory, lockType=Exclusive) at Dbb.cpp:201
#5 0x00000000008948ef in PageInventoryPage::allocPage (dbb=0x2a96452ce8, pageType=PAGE_sections, transId=1) at PageInventoryPage.cpp:80
#6 0x000000000085b46f in Dbb::allocPage (this=0x2a96452ce8, pageType=PAGE_sections, transId=1) at Dbb.cpp:227
#7 0x00000000008ae06a in Section::createSection (dbb=0x2a96452ce8, transId=1) at Section.cpp:108
#8 0x000000000085b555 in Dbb::createSection (this=0x2a96452ce8, transId=1) at Dbb.cpp:251
#9 0x000000000085410a in Database::createSection (this=0x2a962516e8, transaction=0x2a9645dcf0) at Database.cpp:909
#10 0x00000000008288c7 in Table::create (this=0x2a9646a008, tableType=0xbbc8a3 "SYSTEM TABLE", transaction=0x2a9645dcf0) at Table.cpp:189
#11 0x00000000008d04a5 in Nfs::Statement::createTable (this=0x2a964545c0, syntax=0x2a96469f20) at Statement.cpp:218
#12 0x00000000008d3183 in Nfs::Statement::upgradeTable (this=0x2a964545c0, syntax=0x2a96469f20) at Statement.cpp:1129
#13 0x00000000008d2055 in Nfs::Statement::executeDDL (this=0x2a964545c0) at Statement.cpp:688
#14 0x00000000008d75b3 in Nfs::Statement::execute (this=0x2a964545c0,
sqlString=0xbb6820 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"..., isQuery=false) at Statement.cpp:2607
#15 0x00000000008d01a6 in Nfs::Statement::execute (this=0x2a964545c0,
sqlString=0xbb6820 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"...) at Statement.cpp:160
#16 0x00000000008d2cac in Nfs::Statement::executeUpdate (this=0x2a964545c0,
sqlString=0xbb6820 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"...) at Statement.cpp:1016
#17 0x00000000008a64a4 in RoleModel::createTables (this=0x2a96284920) at RoleModel.cpp:157
#18 0x00000000008532ea in Database::createDatabase (this=0x2a962516e8, filename=0x4027ed40 "./test.fts") at Database.cpp:526
#19 0x000000000084baf6 in Connection::createDatabase (this=0x2a96452aa0, dbName=0x2a964527d4 "test", fileName=0x2a96452804 "./test.fts",
account=0xba3eb7 "mysql", password=0xba3eb7 "mysql", threads=0x2a96452830) at Connection.cpp:1058
#20 0x000000000081d004 in StorageDatabase::createDatabase (this=0x2a964523f0) at StorageDatabase.cpp:165
#21 0x000000000081bda8 in StorageConnection::create (this=0x2a964522c8) at StorageConnection.cpp:118
#22 0x000000000081f844 in StorageHandler::getStorageConnection (this=0x2a96251048, path=0xf9a1b0 "./test", mySqlThread=0x0,
createFlag=OpenOrCreateDatabase) at StorageHandler.cpp:167
#23 0x0000000000815c67 in NfsStorageTable::create (this=0xfd8b18, mySqlName=0x40280a50 "./test/t1", form=0x4027fe10, info=0xfecc60)
at ha_falcon.cpp:538
#24 0x000000000075c08f in ha_create_table (thd=0xfc54a8, path=0x40280a50 "./test/t1", db=0xfecb90 "test", table_name=0xfec890 "t1",
create_info=0xfecc60, update_create_info=false) at handler.cc:2596
#25 0x000000000073149a in rea_create_table (thd=0xfc54a8, path=0x40280a50 "./test/t1", db=0xfecb90 "test", table_name=0xfec890 "t1",
create_info=0xfecc60, create_fields=@0xfc5de8, keys=0, key_info=0xfecf38, file=0xfecd30) at unireg.cc:361
#26 0x00000000007751fc in mysql_create_table_internal (thd=0xfc54a8, db=0xfecb90 "test", table_name=0xfec890 "t1", lex_create_info=0xfc5fa8,
fields=@0xfc5de8, keys=@0xfc5dd0, internal_tmp_table=false, select_field_count=0, use_copy_create_info=true) at sql_table.cc:3509
#27 0x0000000000775507 in mysql_create_table (thd=0xfc54a8, db=0xfecb90 "test", table_name=0xfec890 "t1", create_info=0xfc5fa8,
fields=@0xfc5de8, keys=@0xfc5dd0, internal_tmp_table=false, select_field_count=0, use_copy_create_info=true) at sql_table.cc:3586
#28 0x00000000006737a3 in mysql_execute_command (thd=0xfc54a8) at sql_parse.cc:3088
#29 0x000000000067b713 in mysql_parse (thd=0xfc54a8, inBuf=0xfec808 "create table t1 (a int) engine falcon", length=37) at sql_parse.cc:6162
#30 0x0000000000670e66 in dispatch_command (command=COM_QUERY, thd=0xfc54a8, packet=0xfe4779 "create table t1 (a int) engine falcon",
packet_length=38) at sql_parse.cc:1857
#31 0x0000000000670528 in do_command (thd=0xfc54a8) at sql_parse.cc:1626
#32 0x000000000066f658 in handle_one_connection (arg=0xfc54a8) at sql_parse.cc:1232
#33 0x0000002a95ef2aff in start_thread () from /lib64/tls/libpthread.so.0
#34 0x0000002a95c7c4b3 in clone () from /lib64/tls/libc.so.6
Regards, Hakan
[15 Feb 2007 22:08]
MySQL Verification Team
still asserts on todays BK sources of 5.2.4-falcon-alpha-debug. Ignore my previous post, i had forgotten to rm -rf my datadir first.
[18 Feb 2007 15:47]
Hakan Küçükyılmaz
Setting page size to 32KB leads to failure of falcon_bug_126. ./mysql-test-run.pl --skip-ndb --mysqld="--falcon_page_size=32768" falcon_bug_126_I falcon_bug_126_II TEST RESULT TIME (ms) ------------------------------------------------------- falcon_bug_126_I [ pass ] 513 falcon_bug_126_II [ fail ] Errors are (from /home/hakan/lsmy005/mysql/mysql-5.1-falcon-lu0009/mysql-test/var/log/mysqltest-time) : mysqltest: At line 7: query 'SELECT * FROM t1' failed: 1030: Got error 157 from storage engine (the last lines may be the most important ones) Result from queries before failure can be found in /home/hakan/lsmy005/mysql/mysql-5.1-falcon-lu0009/mysql-test/var/log/falcon_bug_126_II.log
[19 Feb 2007 16:29]
Hakan Küçükyılmaz
32K page size works now with falcon_select test. However, page sizes of 1K and 2K are still propblematic and some tests are failing: 1024 falcon_bug_185 falcon_bug_23189 falcon_bug_23818_A falcon_bug_23818_B falcon_bug_23818_C falcon_bug_23818_I falcon_bug_23818_II falcon_bug_26420 falcon_bugs falcon_limits 2048 falcon_bug_23818_A falcon_bug_23818_B falcon_bug_23818_C falcon_bug_23818_I falcon_bug_23818_II 4096 All ok. 499.727 seconds 8192 All ok. 463.906 seconds 16384 All ok. 411.623 seconds 32768 All ok 475.328 seconds Regards, Hakan
[19 Feb 2007 19:13]
Hakan Küçükyılmaz
Page size of 1K and 2K does not work properly. Modified falcon_page_size_1.test and falcon_page_size_2.test to reflect the crash. Regards, Hakan
[20 Feb 2007 21:26]
Kevin Lewis
Provided some code to Hakan for evaluation.
[2 Aug 2007 19:12]
MySQL Verification Team
Could you please reverify. I can't repeat on Windows X64: c:\dev\6.0>bin\mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 6.0.2-alpha-nt Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create schema test; use test; Query OK, 1 row affected (0.00 sec) Database changed mysql> set storage_engine=falcon; Query OK, 0 rows affected (0.00 sec) mysql> create table t1 (a int); Query OK, 0 rows affected (0.18 sec) mysql> show variables like "falcon_page_size"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | falcon_page_size | 32768 | +------------------+-------+ 1 row in set (0.01 sec) mysql> show variables like "%version%"; +-------------------------+---------------------+ | Variable_name | Value | +-------------------------+---------------------+ | protocol_version | 10 | | version | 6.0.2-alpha-nt | | version_comment | Source distribution | | version_compile_machine | unknown | | version_compile_os | Win64 | +-------------------------+---------------------+ 5 rows in set (0.00 sec) mysql> show create table t1; +-------+---------------------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=Falcon DEFAULT CHARSET=latin1 | +-------+---------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> Thanks in advance.
[2 Aug 2007 23:26]
Hakan Küçükyılmaz
Actually 32k does not crash anymore. However, page size of 1k and 2k are crashing. Can you verify with 1k and 2k, please? Thanks, Hakan
[2 Sep 2007 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[2 Sep 2007 23:37]
Hakan Küçükyılmaz
I think page size of 1k and 2k are still crashing Falcon.
[16 Oct 2007 11:57]
Hakan Küçükyılmaz
Page size of 1K and 2K are still crashing Falcon. We should disable 1K and 2K pages or fix the crash. Best regards, Hakan
[18 Oct 2007 19:50]
Hakan Küçükyılmaz
Still fails, please use falcon_page_size_1.test and falcon_page_size_2.test ./mysql-test-run.pl --enable-disabled --skip-ndb --mem --suite=falcon falcon_page_size_1 falcon_page_size_2 TEST RESULT TIME (ms) ------------------------------------------------------- falcon.falcon_page_size_1 [ fail ] ERROR: Bug#23220 2007-02-19 hakank Currently failing Stopping All Servers Restoring snapshot of databases Resuming Tests falcon.falcon_page_size_2 [ fail ] ERROR: Bug#23220 2007-02-19 hakank Currently failing Stopping All Servers Restoring snapshot of databases Saving core.8899 Resuming Tests ------------------------------------------------------- Stopping All Servers Failed 2/2 tests, 0.00% were successful.
[19 Nov 2007 0:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[19 Nov 2007 22:19]
Hakan Küçükyılmaz
Initial bug report about page size of 32k does not fail anymore hakan@lu0011:~/work/mysql/mysql-6.0-falcon/mysql-test$ ./mysql-test-run.pl --force --suite=falcon falcon_page_size_32 TEST RESULT TIME (ms) ------------------------------------------------------- falcon.falcon_page_size_32 [ pass ] 468 ------------------------------------------------------- Stopping All Servers All 1 tests were successful. The servers were restarted 1 times Spent 0.468 of 7 seconds executing testcases Opening new bug about failing 1k and 2k page sizes.

Description: Setting falcon_page_size to 32k leads to crash. How to repeat: gdb /usr/local/mysql/libexec/mysqld (gdb) run --gdb --user=mysql --falcon_page_size=32768 [17:51] root@(none)>show variables like '%page%'; +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | falcon_page_cache_size | 33554432 | | falcon_page_size | 32768 | | innodb_max_dirty_pages_pct | 90 | | large_page_size | 0 | | large_pages | OFF | +----------------------------+----------+ 5 rows in set (0.00 sec) [17:51] root@(none)>create schema test; use test; Query OK, 1 row affected (0.00 sec) [17:55] root@test>create table t1 (a int); ERROR 2013 (HY000): Lost connection to MySQL server during query Backtrace: Program received signal SIGILL, Illegal instruction. [Switching to Thread 1263528880 (LWP 9240)] 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x40181541 in raise () from /lib/tls/libc.so.6 #2 0x08426a9a in Error::debugBreak () at Error.cpp:93 #3 0x08426af7 in Error::error (string=0x87285f4 "page %d wrong page type, expected %d got %d\n") at Error.cpp:70 #4 0x08498bce in Cache::fetchPage (this=0x402f8c80, dbb=0x402f8720, pageNumber=31, pageType=PAGE_inventory, lockType=Exclusive) at Cache.cpp:183 #5 0x0841ded2 in Dbb::fetchPage (this=0x402f8720, pageNumber=31, pageType=PAGE_inventory, lockType=Exclusive) at Dbb.cpp:196 #6 0x0844e820 in PageInventoryPage::allocPage (dbb=0x402f8720, pageType=PAGE_sections, transId=1) at PageInventoryPage.cpp:77 #7 0x0841deef in Dbb::allocPage (this=0x402f8720, pageType=PAGE_sections, transId=1) at Dbb.cpp:201 #8 0x0846667e in Section::createSection (dbb=0x402f8720, transId=1) at Section.cpp:98 #9 0x0841dfa8 in Dbb::createSection (this=0x402f8720, transId=1) at Dbb.cpp:225 #10 0x08414938 in Database::createSection (this=0x4c6f8028, transaction=0x402fddd0) at Database.cpp:886 #11 0x083ed353 in Table::create (this=0x4030855c, tableType=0x8726c54 "SYSTEM TABLE", transaction=0x402fddd0) at Table.cpp:200 #12 0x0848a3d9 in Nfs::Statement::createTable (this=0x40306628, syntax=0x403084fc) at Statement.cpp:218 #13 0x0848a4f5 in Nfs::Statement::upgradeTable (this=0x40306628, syntax=0x403084fc) at Statement.cpp:1130 #14 0x0848b49d in Nfs::Statement::executeDDL (this=0x40306628) at Statement.cpp:689 #15 0x0848c580 in Nfs::Statement::execute (this=0x40306628, sqlString=0x8722f50 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"..., isQuery=false) at Statement.cpp:2608 #16 0x0848c5fc in Nfs::Statement::execute (this=0x40306628, sqlString=0x8722f50 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"...) at Statement.cpp:160 #17 0x08485241 in Nfs::Statement::executeUpdate (this=0x40306628, sqlString=0x8722f50 "upgrade table system.privileges (holderType tinyint not null,holderSchema varchar (128) not null,holderName varchar (128) not null,objectType tinyint not null,objectSchema varchar (128) not null,objec"...) at Statement.cpp:1017 #18 0x0845efdb in RoleModel::createTables (this=0x402f8f58) at RoleModel.cpp:157 #19 0x0841b293 in Database::createDatabase (this=0x4c6f8028, filename=0x4b4fb96c "./test.ndb") at Database.cpp:519 #20 0x08411076 in Connection::createDatabase (this=0x402f8a98, dbName=0x402f83d0 "test", fileName=0x402f83f4 "./test.ndb", account=0x8716f8f "mysql", password=0x8716f8f "mysql", threads=0x402f8414) at Connection.cpp:1057 #21 0x083e7700 in StorageDatabase::createDatabase (this=0x402f81d0) at StorageDatabase.cpp:192 #22 0x083e3eef in StorageConnection::create (this=0x402f8118) at StorageConnection.cpp:225 #23 0x083e490b in StorageConnection::getStorageConnection (path=0x8f0fba8 "./test", mySqlThread=0x0, createFlag=OpenOrCreateDatabase) at StorageConnection.cpp:202 #24 0x083e4a11 in getStorageConnection (path=0x8f0fba8 "./test", mySqlThread=0x0, create=OpenOrCreateDatabase) at StorageConnection.cpp:65 #25 0x083e0cde in NfsStorageTable::create (this=0x8f5e828, mySqlName=0x4b4fd294 "./test/t1", form=0x4b4fc508, info=0x8f6c4b8) at ha_falcon.cpp:348 #26 0x083331bc in ha_create_table (thd=0x8f44ae8, path=0x4b4fd294 "./test/t1", db=0x8f6c440 "test", table_name=0x8f6c270 "t1", create_info=0x8f6c4b8, update_create_info=false) at handler.cc:2541 #27 0x0830bcbc in rea_create_table (thd=0x8f44ae8, path=0x4b4fd294 "./test/t1", db=0x8f6c440 "test", table_name=0x8f6c270 "t1", create_info=0x8f6c4b8, create_fields=@0x8f4501c, keys=0, key_info=0x8f6c6a0, file=0x8f6c538) at unireg.cc:356 #28 0x0834a745 in mysql_create_table_internal (thd=0x8f44ae8, db=0x8f6c440 "test", table_name=0x8f6c270 "t1", lex_create_info=0x8f45104, fields=@0x8f4501c, keys=@0x8f45010, internal_tmp_table=false, select_field_count=0, use_copy_create_info=true) at sql_table.cc:3492 #29 0x0834aa2d in mysql_create_table (thd=0x8f44ae8, db=0x8f6c440 "test", table_name=0x8f6c270 "t1", create_info=0x8f45104, fields=@0x8f4501c, keys=@0x8f45010, internal_tmp_table=false, select_field_count=0, use_copy_create_info=true) at sql_table.cc:3572 #30 0x08258fea in mysql_execute_command (thd=0x8f44ae8) at sql_parse.cc:3019 #31 0x08260022 in mysql_parse (thd=0x8f44ae8, inBuf=0x8f6c218 "create table t1 (a int)", length=23) at sql_parse.cc:6062 #32 0x082609cf in dispatch_command (command=COM_QUERY, thd=0x8f44ae8, packet=0x8f641b9 "create table t1 (a int)", packet_length=24) at sql_parse.cc:1828 #33 0x08261cff in do_command (thd=0x8f44ae8) at sql_parse.cc:1612 #34 0x08262101 in handle_one_connection (arg=0x8f44ae8) at sql_parse.cc:1227 #35 0x40283297 in start_thread () from /lib/tls/libpthread.so.0 #36 0x4021837e in clone () from /lib/tls/libc.so.6 #37 0x4b4febb0 in ?? ()