DEBUG: pools: add extra sanity checks when picking objects from a local cache

These few checks are added to make sure we never try to pick an object from
an empty list, which would have a devastating effect.
diff --git a/include/haproxy/pool.h b/include/haproxy/pool.h
index de41fa1..9b80842 100644
--- a/include/haproxy/pool.h
+++ b/include/haproxy/pool.h
@@ -289,6 +289,7 @@
 	/* allocate hottest objects first */
 	item = LIST_NEXT(&ph->list, typeof(item), by_pool);
 #endif
+	BUG_ON(&item->by_pool == &ph->list);
 	LIST_DELETE(&item->by_pool);
 	LIST_DELETE(&item->by_lru);
 
diff --git a/src/pool.c b/src/pool.c
index 0bb79d0..554d1cb 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -329,6 +329,7 @@
 
 	while (released < count && !LIST_ISEMPTY(&ph->list)) {
 		item = LIST_PREV(&ph->list, typeof(item), by_pool);
+		BUG_ON(&item->by_pool == &ph->list);
 		pool_check_pattern(ph, item, pool->size);
 		LIST_DELETE(&item->by_pool);
 		LIST_DELETE(&item->by_lru);
@@ -389,6 +390,7 @@
 
 	do {
 		item = LIST_PREV(&th_ctx->pool_lru_head, struct pool_cache_item *, by_lru);
+		BUG_ON(&item->by_lru == &th_ctx->pool_lru_head);
 		/* note: by definition we remove oldest objects so they also are the
 		 * oldest in their own pools, thus their next is the pool's head.
 		 */