| 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.
