From: Olivier Houchard Date: Thu, 20 Nov 2025 12:51:02 +0000 (+0100) Subject: BUG/MEDIUM: queues: Don't forget to unlock the queue before exiting X-Git-Tag: v3.3-dev14~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e9d34f991e79dc5b39cb35fdc5b8e7239cb0fd06;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: queues: Don't forget to unlock the queue before exiting In assign_server_and_queue(), there's a rare case when the server was full, so we created a pendconn, another server was considered but in the meanwhile the pendconn was unqueued already, so we just left the function. We did so, however, while still holding the queue lock, which will ultimately lead to a deadlock, and ultimately the watchdog would kill the process. To fix that, just unlock the queue before leaving. This should be backported to 3.2. --- diff --git a/src/backend.c b/src/backend.c index cac056efb..0170547b2 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1137,6 +1137,7 @@ int assign_server_and_queue(struct stream *s) HA_SPIN_LOCK(QUEUE_LOCK, &p->queue->lock); if (!p->node.node.leaf_p) { + HA_SPIN_UNLOCK(QUEUE_LOCK, &p->queue->lock); /* * Okay we've been queued and * unqueued already, just leave