mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-24 19:22:11 +01:00
gthreadedresolver: fix hang on g_thread_pool_push() failure
In resolve_sync function in gthreadedresolver.c, if g_thread_pool_push fails due to thread creation failure, we are just simply appending the data to the queue of work to do. After the failure, we might wait indefinitely in g_cond_wait. In case of g_thread_pool_push failure, propagate the error so that this function does not blocks forever in case of failure. https://bugzilla.gnome.org/show_bug.cgi?id=651034
This commit is contained in:
parent
f7767ec701
commit
16d5f448d8
@ -326,8 +326,9 @@ resolve_sync (GThreadedResolver *gtr,
|
||||
}
|
||||
|
||||
req->cond = g_cond_new ();
|
||||
g_thread_pool_push (gtr->thread_pool, req, NULL);
|
||||
g_cond_wait (req->cond, req->mutex);
|
||||
g_thread_pool_push (gtr->thread_pool, req, &req->error);
|
||||
if (!req->error)
|
||||
g_cond_wait (req->cond, req->mutex);
|
||||
g_mutex_unlock (req->mutex);
|
||||
|
||||
if (req->error)
|
||||
|
Loading…
x
Reference in New Issue
Block a user