Bug #31868 | mysql_server_init crash when language path is not correctly set | ||
---|---|---|---|
Submitted: | 26 Oct 2007 6:27 | Modified: | 14 Jan 2008 20:29 |
Reporter: | Zhenxing He | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Embedded Library ( libmysqld ) | Severity: | S3 (Non-critical) |
Version: | 5.1 | OS: | Windows |
Assigned to: | Alexey Botchkov | CPU Architecture: | Any |
Tags: | crash, embedded, libmysqld |
[26 Oct 2007 6:27]
Zhenxing He
[26 Oct 2007 6:54]
Valeriy Kravchuk
Thank you for a problem report. Please, specify the exact version, 5.1.x, you had used, and send a sample code that demonstrates the problem.
[26 Oct 2007 7:01]
Zhenxing He
I have tested 5.1.22-rc and 5.1.23-beta, the following is the test program I used. ------------------- test.c ------------------------------------ #include <my_global.h> #include <mysql.h> MYSQL *mysql; /* the embedded sever class */ MYSQL_RES *results; /* store results from qeuries */ MYSQL_ROW record; /* a single row in a result set */ /* These variables set the location of the ini file and data stores. */ static char *server_options[] = {"mysql_test", "--defaults-file=my.cnf"}; int num_elements=sizeof(server_options) / sizeof(char *); static char *server_groups[] = {"libmysqld_server", "libmysqld_client"}; int main(void) { /* This section initializes the server and sets server options. */ if (mysql_library_init(num_elements, server_options, server_groups)) { fprintf(stderr, "Could not initialize MySQL library\n"); exit(1); } mysql_library_end(); } ---------------------- test.c --------------------------------
[28 Oct 2007 19:05]
MySQL Verification Team
Thank you for the bug report.
[9 Nov 2007 7:52]
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/37408 ChangeSet@1.2625, 2007-11-09 11:47:51+04:00, holyfoot@mysql.com +2 -0 Bug #31868 mysql_server_init crash when language path is not correctly set. When mysql_server_init() interrupts on some error (wrong errmsg file for example) in the middle of it's execution, it doesn't call execute_ddl_log_recovery() so LOCK_gdl mutex isn't init-ed. In this case we shouldn't call release_ddl_log during cleanup as it uses that mutex inside.
[13 Nov 2007 9:15]
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/37641 ChangeSet@1.2625, 2007-11-13 13:09:59+04:00, holyfoot@mysql.com +4 -0 Bug #31868 mysql_server_init crash when language path is not correctly set. When mysql_server_init() interrupts on some error (wrong errmsg file for example) in the middle of it's execution, it doesn't call execute_ddl_log_recovery() so LOCK_gdl mutex isn't init-ed. In this case we shouldn't execute release_ddl_log during cleanup as it uses that mutex inside.
[14 Dec 2007 8:16]
Bugs System
Pushed into 5.1.23-rc
[14 Dec 2007 8:19]
Bugs System
Pushed into 6.0.5-alpha
[14 Jan 2008 20:29]
Jon Stephens
Documented bugfix in 5.1.23 and 6.0.5 changelogs as follows: When the language option was not set correctly, API programs calling mysql_server_init() crashed. This issue was observed only on Windows platforms.