From: Tobias Brunner Date: Thu, 29 Apr 2010 11:30:51 +0000 (+0200) Subject: The mutex of a thread has to be locked when destroying it. X-Git-Tag: 4.4.0~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=361f416d2c2ccbab6e8960812be861bcdb0cb493;p=thirdparty%2Fstrongswan.git The mutex of a thread has to be locked when destroying it. --- diff --git a/src/libstrongswan/threading/thread.c b/src/libstrongswan/threading/thread.c index 86477a64d4..3751bb749b 100644 --- a/src/libstrongswan/threading/thread.c +++ b/src/libstrongswan/threading/thread.c @@ -300,6 +300,7 @@ thread_t *thread_create(thread_main_t main, void *arg) if (pthread_create(&this->thread_id, NULL, (void*)thread_main, this) != 0) { DBG1(DBG_LIB, "failed to create thread!"); + this->mutex->lock(this->mutex); thread_destroy(this); return NULL; } @@ -433,6 +434,7 @@ void threads_init() void threads_deinit() { private_thread_t *main_thread = (private_thread_t*)thread_current(); + main_thread->mutex->lock(main_thread->mutex); thread_destroy(main_thread); current_thread->destroy(current_thread); id_mutex->destroy(id_mutex);