Bug #45781 | infinite hang/crash in "opening tables" after handler tries to open merge table | ||
---|---|---|---|
Submitted: | 26 Jun 2009 9:28 | Modified: | 7 Mar 2010 12:42 |
Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Merge storage engine | Severity: | S2 (Serious) |
Version: | 5.1.35, 5.1.37 | OS: | Any |
Assigned to: | Kristofer Pettersson | CPU Architecture: | Any |
Tags: | handler, merge, regression |
[26 Jun 2009 9:28]
Shane Bester
[7 Jul 2009 10:52]
Kristofer Pettersson
Test causes: mysqltest: At line 6: query 'handler m1 open' failed: 1031: Table storage engine for 'm1' doesn't have this option Could this bug possibly have been fixed by patch for Bug#41110 ?
[7 Jul 2009 10:57]
Kristofer Pettersson
..possibly not since I'm using version 5.1.37-debug
[7 Jul 2009 11:06]
MySQL Verification Team
that error occurs, but then the next statement hangs as described.
[9 Jul 2009 7:04]
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/78261 3000 Kristofer Pettersson 2009-07-09 Bug#45781 infinite hang/crash in "opening tables" after handler tries to open merge table The MERGE table storage engine does not support the HA_CAN_SQL_HANDLE feature and any attempt to open the merge table will fail with ER_ILLEGAL_HA. After an error occurred the tables that was opened must be closed again or they will be left in an inconsistent state. However, the assumption made in the code for closing and register handler tables was that only one table will be opened, and this is not true for MERGE tables which will cause multiple tables to open. The next time a SELECT operation was issued on the merge table it caused the system to freeze. This patch fixes this issue by making sure that all tables which are opened also are closed in the event of an error. @ mysql-test/r/merge.result * Added test case for bug 45781 @ mysql-test/t/merge.test * Added test case for bug 45781 @ sql/sql_handler.cc * open_tables can consist of more than one element; find the last element before attempting to merge the list with handler_tables * Apply close_thread_table to all items in handler_tables in case of an error.
[15 Jul 2009 18:59]
Ingo Strüwing
Please find comments on IRC (copied to private email).
[15 Jul 2009 19:33]
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/78784 3017 Konstantin Osipov 2009-07-15 A fix for Bug#45781 "infinite hang/crash in "opening tables" after handler tries to open merge table". Or, put differently, a code review for Kristoffer's patch. Discussed the problem with Dmitri and the solution implemented in this patch seems to be least nasty of all.
[15 Jul 2009 23:26]
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/78798 3024 Kristofer Pettersson 2009-07-16 Bug#45781 infinite hang/crash in "opening tables" after handler tries to open merge table The MERGE table storage engine does not support the HA_CAN_SQL_HANDLE feature and any attempt to open the merge table will fail with ER_ILLEGAL_HA. After an error occurred the tables that was opened must be closed again or they will be left in an inconsistent state. However, the assumption made in the code for closing and register handler tables was that only one table will be opened, and this is not true for MERGE tables which will cause multiple tables to open. The next time a SELECT operation was issued on the merge table it caused the system to freeze. This patch fixes this issue by making sure that all tables which are opened also are closed in the event of an error. @ mysql-test/r/merge.result Added test case for bug 45781 @ mysql-test/t/merge.test Added test case for bug 45781 @ sql/sql_handler.cc * mysql_ha_open() was never ment to open more than one table. If we encounter more tables, we should close all tables related to the current substatement and raise an exception.
[16 Jul 2009 19:08]
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/78879 3470 Kristofer Pettersson 2009-07-16 bug#45781 infinite hang/crash in "opening tables" after handler tries to open merge table Fixed Merge mistake between 5.1->pe
[4 Aug 2009 19:51]
Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090804194615-h40sa098mx4z49qg) (version source revid:dao-gang.qu@sun.com-20090717025250-n2lq5mqibjfdpigu) (merge vers: 5.4.4-alpha) (pib:11)
[4 Aug 2009 20:45]
Bugs System
Pushed into 5.1.38 (revid:davi.arnaut@sun.com-20090804204317-ggodqkik7de6nfpz) (version source revid:davi.arnaut@sun.com-20090804204317-ggodqkik7de6nfpz) (merge vers: 5.1.38) (pib:11)
[30 Sep 2009 8:18]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20090929093622-1mooerbh12e97zux) (version source revid:alik@sun.com-20090923103200-kyo2bakdo6tfb2fb) (merge vers: 6.0.14-alpha) (pib:11)
[1 Oct 2009 5:59]
Bugs System
Pushed into 5.1.39-ndb-6.3.28 (revid:jonas@mysql.com-20091001055605-ap2kiaarr7p40mmv) (version source revid:jonas@mysql.com-20091001055605-ap2kiaarr7p40mmv) (merge vers: 5.1.39-ndb-6.3.28) (pib:11)
[1 Oct 2009 7:25]
Bugs System
Pushed into 5.1.39-ndb-7.0.9 (revid:jonas@mysql.com-20091001072547-kv17uu06hfjhgjay) (version source revid:jonas@mysql.com-20091001071652-irejtnumzbpsbgk2) (merge vers: 5.1.39-ndb-7.0.9) (pib:11)
[1 Oct 2009 13:25]
Bugs System
Pushed into 5.1.39-ndb-7.1.0 (revid:jonas@mysql.com-20091001123013-g9ob2tsyctpw6zs0) (version source revid:jonas@mysql.com-20091001123013-g9ob2tsyctpw6zs0) (merge vers: 5.1.39-ndb-7.1.0) (pib:11)
[5 Oct 2009 10:50]
Bugs System
Pushed into 5.1.39-ndb-6.2.19 (revid:jonas@mysql.com-20091005103850-dwij2dojwpvf5hi6) (version source revid:jonas@mysql.com-20090930185117-bhud4ek1y0hsj1nv) (merge vers: 5.1.39-ndb-6.2.19) (pib:11)
[13 Nov 2009 10:21]
Tony Bedford
An entry has been added to each of the following changelogs: 6.0.14, 5.4.4, 5.1.38 An infinite hang and 100% CPU usage occurred after handler tried to open a merge table. If the command mysqladmin shutdown was executed during the hang, the debug server generated the following assert: mysqld: table.cc:407: void free_table_share(TABLE_SHARE*): Assertion `share->ref_count == 0' failed. 090610 14:54:04 - mysqld got signal 6 ;
[16 Jan 2010 0:59]
Paul DuBois
Noted in 5.5.0 changelog.
[16 Feb 2010 16:49]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100216101445-2ofzkh48aq2e0e8o) (version source revid:kostja@sun.com-20091211154405-c9yhiewr9o5d20rq) (merge vers: 6.0.14-alpha) (pib:16)
[16 Feb 2010 16:59]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100216101208-33qkfwdr0tep3pf2) (version source revid:kostja@sun.com-20091210084103-l4f8u62u4evoy3dc) (pib:16)
[17 Feb 2010 0:41]
Paul DuBois
Setting report to Need Merge pending push of Celosia into release tree.
[6 Mar 2010 11:03]
Bugs System
Pushed into 5.5.3-m3 (revid:alik@sun.com-20100306103849-hha31z2enhh7jwt3) (version source revid:vvaintroub@mysql.com-20100216221947-luyhph0txl2c5tc8) (merge vers: 5.5.99-m3) (pib:16)
[7 Mar 2010 12:42]
Paul DuBois
Already fixed in earlier 5.5.x.