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