Mesa (master): util/u_queue: skip util_queue_finish if num_threads is 0
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Oct 24 01:12:39 UTC 2019
Module: Mesa
Branch: master
Commit: c2efd2cbfb19808cd4bf5f2f0cf62455f80f1a2f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2efd2cbfb19808cd4bf5f2f0cf62455f80f1a2f
Author: Marek Olšák <marek.olsak at amd.com>
Date: Wed Oct 23 21:01:38 2019 -0400
util/u_queue: skip util_queue_finish if num_threads is 0
This fixes a deadlock in pthread_barrier_destroy.
Cc: 19.1 19.2 <mesa-stable at lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/util/u_queue.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/util/u_queue.c b/src/util/u_queue.c
index ca72968053a..47b8dcd407c 100644
--- a/src/util/u_queue.c
+++ b/src/util/u_queue.c
@@ -647,6 +647,13 @@ util_queue_finish(struct util_queue *queue)
* wait for it exclusively.
*/
mtx_lock(&queue->finish_lock);
+
+ /* The number of threads can be changed to 0, e.g. by the atexit handler. */
+ if (!queue->num_threads) {
+ mtx_unlock(&queue->finish_lock);
+ return;
+ }
+
fences = malloc(queue->num_threads * sizeof(*fences));
util_barrier_init(&barrier, queue->num_threads);
More information about the mesa-commit
mailing list