diff --git a/include/common/buffer.h b/include/common/buffer.h
index 1c7963f..ac48056 100644
--- a/include/common/buffer.h
+++ b/include/common/buffer.h
@@ -47,7 +47,6 @@
 __decl_hathreads(extern HA_SPINLOCK_T buffer_wq_lock);
 
 int init_buffer();
-void deinit_buffer();
 void buffer_dump(FILE *o, struct buffer *b, int from, int to);
 
 /*****************************************************************/
diff --git a/include/common/chunk.h b/include/common/chunk.h
index ffcb93c..ebd194a 100644
--- a/include/common/chunk.h
+++ b/include/common/chunk.h
@@ -47,7 +47,6 @@
 struct buffer *get_trash_chunk(void);
 struct buffer *alloc_trash_chunk(void);
 int init_trash_buffers(int first);
-void deinit_trash_buffers(void);
 
 /*
  * free a trash chunk allocated by alloc_trash_chunk(). NOP on NULL.
diff --git a/include/common/memory.h b/include/common/memory.h
index 5bed602..f0f6e13 100644
--- a/include/common/memory.h
+++ b/include/common/memory.h
@@ -161,6 +161,7 @@
  * This should be called only under extreme circumstances.
  */
 void *pool_destroy(struct pool_head *pool);
+void pool_destroy_all();
 
 /* returns the pool index for pool <pool>, or -1 if this pool has no index */
 static inline ssize_t pool_get_index(const struct pool_head *pool)
diff --git a/include/proto/signal.h b/include/proto/signal.h
index 0806d04..ff6976d 100644
--- a/include/proto/signal.h
+++ b/include/proto/signal.h
@@ -20,7 +20,6 @@
 
 extern int signal_queue_len;
 extern struct signal_descriptor signal_state[];
-extern struct pool_head *pool_head_sig_handlers;
 
 __decl_hathreads(extern HA_SPINLOCK_T signals_lock);
 
diff --git a/src/buffer.c b/src/buffer.c
index e55c5bd..c4d6140 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -54,11 +54,6 @@
 	return 1;
 }
 
-void deinit_buffer()
-{
-	pool_destroy(pool_head_buffer);
-}
-
 /*
  * Dumps part or all of a buffer.
  */
diff --git a/src/chunk.c b/src/chunk.c
index fa3fb71..e052322 100644
--- a/src/chunk.c
+++ b/src/chunk.c
@@ -102,14 +102,6 @@
 }
 
 /*
- * free the trash buffers
- */
-void deinit_trash_buffers(void)
-{
-	pool_destroy(pool_head_trash);
-}
-
-/*
  * Allocate a trash chunk from the reentrant pool. The buffer starts at the
  * end of the chunk. This chunk must be freed using free_trash_chunk(). This
  * call may fail and the caller is responsible for checking that the returned
diff --git a/src/dns.c b/src/dns.c
index 10ccf87..2a53c03 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -1839,9 +1839,6 @@
 		LIST_DEL(&srvrq->list);
 		free(srvrq);
 	}
-
-	pool_destroy(dns_answer_item_pool);
-	pool_destroy(dns_resolution_pool);
 }
 
 /* Finalizes the DNS configuration by allocating required resources and checking
diff --git a/src/filters.c b/src/filters.c
index 7b5700d..d29a0c0 100644
--- a/src/filters.c
+++ b/src/filters.c
@@ -1192,13 +1192,6 @@
 
 INITCALL1(STG_REGISTER, cfg_register_keywords, &cfg_kws);
 
-__attribute__((destructor))
-static void
-__filters_deinit(void)
-{
-	pool_destroy(pool_head_filter);
-}
-
 REGISTER_POST_CHECK(flt_init_all);
 REGISTER_PER_THREAD_INIT(flt_init_all_per_thread);
 REGISTER_PER_THREAD_DEINIT(flt_deinit_all_per_thread);
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index 8d63081..bd351be 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -4676,11 +4676,3 @@
 };
 
 INITCALL1(STG_REGISTER, http_res_keywords_register, &http_res_action_kws);
-
-__attribute__((destructor))
-static void
-__spoe_deinit(void)
-{
-	pool_destroy(pool_head_spoe_ctx);
-	pool_destroy(pool_head_spoe_appctx);
-}
diff --git a/src/haproxy.c b/src/haproxy.c
index 6ec9bcc..96715ee 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -2500,7 +2500,6 @@
 	cfg_unregister_sections();
 
 	deinit_log_buffers();
-	deinit_trash_buffers();
 
 	protocol_unbind_all();
 
@@ -2534,20 +2533,7 @@
 	}
 
 	vars_prune(&global.vars, NULL, NULL);
-
-	deinit_buffer();
-
-	pool_destroy(pool_head_stream);
-	pool_destroy(pool_head_session);
-	pool_destroy(pool_head_connection);
-	pool_destroy(pool_head_connstream);
-	pool_destroy(pool_head_requri);
-	pool_destroy(pool_head_task);
-	pool_destroy(pool_head_capture);
-	pool_destroy(pool_head_pendconn);
-	pool_destroy(pool_head_sig_handlers);
-	pool_destroy(pool_head_hdr_idx);
-	pool_destroy(pool_head_http_txn);
+	pool_destroy_all();
 	deinit_pollers();
 } /* end deinit() */
 
diff --git a/src/memory.c b/src/memory.c
index 587702a..6d2eacd 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -436,6 +436,15 @@
 	return NULL;
 }
 
+/* This destroys all pools on exit. It is *not* thread safe. */
+void pool_destroy_all()
+{
+	struct pool_head *entry, *back;
+
+	list_for_each_entry_safe(entry, back, &pools, list)
+		pool_destroy(entry);
+}
+
 /* This function dumps memory usage information into the trash buffer. */
 void dump_pools_to_trash()
 {
diff --git a/src/mux_h1.c b/src/mux_h1.c
index a845a24..bade571 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -1826,14 +1826,6 @@
 
 INITCALL1(STG_REGISTER, register_mux_proto, &mux_proto_htx);
 
-static void __h1_deinit(void)
-{
-	pool_destroy(pool_head_h1c);
-	pool_destroy(pool_head_h1s);
-}
-
-REGISTER_POST_DEINIT(__h1_deinit);
-
 /*
  * Local variables:
  *  c-indent-level: 8
diff --git a/src/mux_h2.c b/src/mux_h2.c
index a30de3d..1971792 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -3845,11 +3845,3 @@
 }};
 
 INITCALL1(STG_REGISTER, cfg_register_keywords, &cfg_kws);
-
-static void __h2_deinit(void)
-{
-	pool_destroy(pool_head_h2s);
-	pool_destroy(pool_head_h2c);
-}
-
-REGISTER_POST_DEINIT(__h2_deinit);
diff --git a/src/signal.c b/src/signal.c
index 4ee5502..b6ed1a6 100644
--- a/src/signal.c
+++ b/src/signal.c
@@ -32,7 +32,7 @@
 sigset_t blocked_sig;
 int signal_pending = 0; /* non-zero if t least one signal remains unprocessed */
 
-DECLARE_POOL(pool_head_sig_handlers, "sig_handlers", sizeof(struct sig_handler));
+DECLARE_STATIC_POOL(pool_head_sig_handlers, "sig_handlers", sizeof(struct sig_handler));
 
 /* Common signal handler, used by all signals. Received signals are queued.
  * Signal number zero has a specific status, as it cannot be delivered by the
