2930 Bjorn Munch 2010-09-14
Bug #55426 mysqltest crashes when trying to unlock not acquired mutex
Bug #55546 mysqltest fails to create a new thread on HPUX
Missing call to pthread_join(), in embedded mode
This independently solves both problems, see 55426 for details.
Addendum: cannot test against a pthread_t, adds boolean flag instead
modified:
client/mysqltest.cc
2929 Bjorn Munch 2010-09-10
Bug #56647 Valgrind warnings for memory leak in mysqltest.cc
Moved an init_dynamic_string() from before to after potential die()
modified:
client/mysqltest.cc
2928 Bjorn Munch 2010-08-31
Bug #56383 provide option to restart mysqld after each mtr test
Added --force-restart
modified:
mysql-test/mysql-test-run.pl
=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc 2010-08-30 09:26:40 +0000
+++ b/client/mysqltest.cc 2010-09-14 12:04:37 +0000
@@ -242,7 +242,9 @@ struct st_connection
int cur_query_len;
pthread_mutex_t mutex;
pthread_cond_t cond;
+ pthread_t tid;
int query_done;
+ my_bool has_thread;
#endif /*EMBEDDED_LIBRARY*/
};
@@ -733,8 +735,6 @@ pthread_handler_t send_one_query(void *a
static int do_send_query(struct st_connection *cn, const char *q, int q_len,
int flags)
{
- pthread_t tid;
-
if (flags & QUERY_REAP_FLAG)
return mysql_send_query(&cn->mysql, q, q_len);
@@ -745,9 +745,10 @@ static int do_send_query(struct st_conne
cn->cur_query= q;
cn->cur_query_len= q_len;
cn->query_done= 0;
- if (pthread_create(&tid, &cn_thd_attrib, send_one_query, (void*)cn))
+ if (pthread_create(&cn->tid, &cn_thd_attrib, send_one_query, (void*)cn))
die("Cannot start new thread for query");
+ cn->has_thread= TRUE;
return 0;
}
@@ -760,6 +761,11 @@ static void wait_query_thread_end(struct
pthread_cond_wait(&con->cond, &con->mutex);
pthread_mutex_unlock(&con->mutex);
}
+ if (con->has_thread)
+ {
+ pthread_join(con->tid, NULL);
+ con->has_thread= FALSE;
+ }
}
#else /*EMBEDDED_LIBRARY*/
@@ -5187,6 +5193,7 @@ void do_connect(struct st_command *comma
#ifdef EMBEDDED_LIBRARY
con_slot->query_done= 1;
+ con_slot->has_thread= FALSE;
#endif
if (!mysql_init(&con_slot->mysql))
die("Failed on mysql_init()");
@@ -7309,11 +7316,10 @@ void run_query(struct st_connection *cn,
(flags & QUERY_REAP_FLAG));
DBUG_ENTER("run_query");
- init_dynamic_string(&ds_warnings, NULL, 0, 256);
-
if (cn->pending && (flags & QUERY_SEND_FLAG))
die ("Cannot run query on connection between send and reap");
+ init_dynamic_string(&ds_warnings, NULL, 0, 256);
/*
Evaluate query if this is an eval command
*/
Attachment: [text/bzr-bundle] bzr/bjorn.munch@oracle.com-20100914120437-56w52t6vqpdy12kd.bundle
| Thread |
|---|
| • bzr push into mysql-5.1-mtr branch (bjorn.munch:2928 to 2930) Bug#55426Bug#55546 | Bjorn Munch | 14 Sep |