[glib] Fix deadlock in threaded resolver



commit a258ec3b5bf0a0b2ab1cb1dce8ce715c3895bdaa
Author: Alexander Larsson <alexl redhat com>
Date:   Fri May 15 10:05:55 2009 +0200

    Fix deadlock in threaded resolver
    
    When you're using the threaded resolver and using a sync call
    without a cancellable the resolve_sync forgot to unlock the
    initial req->mutex lock, leading to a deadlock when unrefing
    the request.
---
 gio/gthreadedresolver.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c
index 6732612..c259b57 100644
--- a/gio/gthreadedresolver.c
+++ b/gio/gthreadedresolver.c
@@ -319,6 +319,7 @@ resolve_sync (GThreadedResolver         *gtr,
   if (!req->cancellable || !gtr->thread_pool)
     {
       req->resolve_func (req, error);
+      g_mutex_unlock (req->mutex);
       return;
     }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]