From 361f416d2c2ccbab6e8960812be861bcdb0cb493 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Thu, 29 Apr 2010 13:30:51 +0200 Subject: [PATCH] The mutex of a thread has to be locked when destroying it. --- src/libstrongswan/threading/thread.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libstrongswan/threading/thread.c b/src/libstrongswan/threading/thread.c index 86477a64d..3751bb749 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);