Bug #36638 mysqld crashes when open file limit is passed and general query log enabled
| Submitted: | 9 May 2008 22:32 | Modified: | 15 Sep 2008 19:04 |
|---|---|---|---|
| Reporter: | Omer Barnir (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: CSV | Severity: | S1 (Critical) |
| Version: | 5.1.26-glibc23, 5.1, 5.1.28bzr | OS: | Any |
| Assigned to: | Sergei Glukhov | CPU Architecture: | Any |
[9 May 2008 22:32]
Omer Barnir
[14 May 2008 15:11]
Valeriy Kravchuk
FYI, on Windows with 5.1.24 I've got: C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -uroot test -P3310 < sel.sql ERROR 1016 (HY000) at line 1: Can't open file: '.\test\ta306.frm' (errno: 24) but no server crash. sel.sql queries MyISAM tables like this: select * from ta0 UNION select * from ta1 UNION select * from ta2 UNION ... select * from ta2998 UNION select * from ta2999 UNION select * from ta3000; No sure if initial test case was any similar.
[2 Aug 2008 5:17]
Shane Bester
davi, valeriy, did you have the general query log enabled ?
[2 Aug 2008 5:33]
Shane Bester
this is trivial to repeat but getting a cut and paste testcase is too tricky. simply set ulimit -n 30 and start a server with --log --log-output=table --max-connections=2 --table_open_cache=100 then set global max_connections=100 the run a few threads accessing any tables, and run a few flush tables to repopulate the table cache... 080726 6:06:11 [ERROR] Error in accept: Too many open files 080726 6:08:16 [ERROR] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld: Can't open file: './test/t1_tmp.frm' (errno: 24) 080726 6:08:17 [ERROR] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld: Can't open file: './test/t_@002d123.frm' (errno: 24) Version: '5.1.28-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution 080726 6:08:38 [ERROR] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld: Can't open file: './test/t_@002d128.frm' (errno: 24) /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(my_print_stacktrace+0x3f)[0x835c74f] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(handle_segfault+0x3a2)[0x81a3242] [0xd6d420] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(thr_lock+0x4a)[0x835ea1a] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(thr_multi_lock+0xc3)[0x835ee53] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(mysql_lock_tables(THD*, st_table**, unsigned int, unsigned int, bool*)+0x2be)[0x819e1de] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(open_ltable(THD*, TABLE_LIST*, thr_lock_type, unsigned int)+0x198)[0x81ec488] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(open_performance_schema_table(THD*, TABLE_LIST*, Open_tables_state*)+0x5a)[0x81ec4fa] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(Log_to_csv_event_handler::log_general(THD*, long, char const*, unsigned int, int, char const*, unsigned int, char const*, unsigned int, charset_info_st*)+0xe8)[0x8236768] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(LOGGER::general_log_write(THD*, enum_server_command, char const*, unsigned int)+0x165)[0x8234a45] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(general_log_write(THD*, enum_server_command, char const*, unsigned int)+0x53)[0x8234b03] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(dispatch_command(enum_server_command, THD*, char*, unsigned int)+0x3fe)[0x81b780e] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(do_command(THD*)+0xe6)[0x81b8996] /home/sbester/mysql/5.1/mysql-5.1.28-linux-i686/bin/mysqld(handle_one_connection+0x5c3)[0x81aa513] /lib/i686/nosegneg/libpthread.so.0[0xde0402] /lib/i686/nosegneg/libc.so.6(clone+0x5e)[0x20c2ae] 080726 6:08:38 - mysqld got signal 11 ; thd->query at 0x9e03678 = set @max_val=25 thd->thread_id=11 thd->killed=NOT_KILLED make sure you get
[2 Aug 2008 5:38]
Shane Bester
release version of mysql-5.1.26-rc-linux-i686-glibc23 crashes too. so this is S1.
[2 Aug 2008 14:54]
Davi Arnaut
I was able to reproduce by creating one connection (or thread) that did a couple of selects and sets while other connection was issuing flush tables in a tight loop. Thanks Shane.
The problem seems to be that the CSV storage engine open function returns success even thought it failed to open the data file. Below follows a quick and dirty fix to check whether the crash goes away:
=== modified file 'storage/csv/ha_tina.cc'
--- storage/csv/ha_tina.cc 2008-03-29 15:56:33 +0000
+++ storage/csv/ha_tina.cc 2008-08-02 14:42:39 +0000
@@ -829,7 +829,7 @@ int ha_tina::open(const char *name, int
local_data_file_version= share->data_file_version;
if ((data_file= my_open(share->data_file_name, O_RDONLY, MYF(0))) == -1)
- DBUG_RETURN(0);
+ DBUG_RETURN(1);
/*
Init locking. Pass handler object to the locking routines,
[2 Aug 2008 14:59]
Davi Arnaut
I want to stress the point that the patch is not definitive, far from it, we still need to come up with a better error and do proper cleanup on the error path.
[5 Aug 2008 9: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/50912 2674 Sergey Glukhov 2008-08-05 Bug#36638 mysqld crashes when open file limit is passed and general query log enabled The problem: CSV storage engine open function returns success even thought it failed to open the data file The fix: return error Additional fixes: added MY_WME to my_open to avoid mysterious error message free share struct if open the file was unsuccesful
[7 Aug 2008 12:12]
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/51092 2674 Sergey Glukhov 2008-08-07 Bug#36638 mysqld crashes when open file limit is passed and general query log enabled(2nd ver) The problem: CSV storage engine open function returns success even thought it failed to open the data file The fix: return error Additional fixes: added MY_WME to my_open to avoid mysterious error message free share struct if open the file was unsuccesful
[15 Aug 2008 7:02]
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/51698 2701 Sergey Glukhov 2008-08-15 Bug#36638 mysqld crashes when open file limit is passed and general query log enabled The problem: CSV storage engine open function returns success even thought it failed to open the data file The fix: return error Additional fixes: added MY_WME to my_open to avoid mysterious error message free share struct if open the file was unsuccessful
[15 Aug 2008 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/51699 2701 Sergey Glukhov 2008-08-15 Bug#36638 mysqld crashes when open file limit is passed and general query log enabled The problem: CSV storage engine open function returns success even thought it failed to open the data file The fix: return error Additional fixes: added MY_WME to my_open to avoid mysterious error message free share struct if open the file was unsuccessful
[19 Aug 2008 13:17]
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/51943 2715 Georgi Kodinov 2008-08-19 [merge] Bug#36638: fixing a failing test case.
[19 Aug 2008 13:19]
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/51945 2715 Georgi Kodinov 2008-08-19 [merge] Bug#36638: fixing a failing test case.
[21 Aug 2008 18:08]
Bugs System
Pushed into 5.1.28 (revid:kgeorge@mysql.com-20080819131620-q59i2vkpmsqhzge0) (version source revid:sergefp@mysql.com-20080819132519-eimtstp3bx89ya9d) (pib:3)
[27 Aug 2008 1:46]
Paul DuBois
Noted in 5.1.28 changelog. The CSV storage engine returned success even when it failed to open a table's data file. Setting report to NDI pending push into 6.0.x.
[14 Sep 2008 4:43]
Bugs System
Pushed into 6.0.7-alpha (revid:kgeorge@mysql.com-20080819131620-q59i2vkpmsqhzge0) (version source revid:john.embretsen@sun.com-20080724122511-9c0oudz1xrdrs6y6) (pib:3)
[15 Sep 2008 19:04]
Paul DuBois
Noted in 6.0.7 changelog.
[15 Oct 2010 10:10]
Kristofer Pettersson
Note: Test case in 5.1 fails under windows 7. "select * from t1" produces an empty result set instead of EE_FILENOTFOUND. Behavior might be sporadic in nature.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.084 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.