From: Willy Tarreau Date: Tue, 23 Oct 2018 12:40:23 +0000 (+0200) Subject: BUG/MEDIUM: pools: fix the minimum allocation size X-Git-Tag: v1.9-dev5~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30f931ead;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: pools: fix the minimum allocation size Fred reported a random crash related to the pools. This was introduced by commit e18db9e98 ("MEDIUM: pools: implement a thread-local cache for pool entries") because the minimum pool item size should have been increased to 32 bytes to accommodate the 2 double-linked lists. No backport is needed. --- diff --git a/src/memory.c b/src/memory.c index 6a345e5569..c4ba54edf0 100644 --- a/src/memory.c +++ b/src/memory.c @@ -62,10 +62,12 @@ struct pool_head *create_pool(char *name, unsigned int size, unsigned int flags) * ease merging of entries. Note that the rounding is a power of two. * This extra (void *) is not accounted for in the size computation * so that the visible parts outside are not affected. + * + * Note: for the LRU cache, we need to store 2 doubly-linked lists. */ if (!(flags & MEM_F_EXACT)) { - align = 16; + align = 4 * sizeof(void *); // 2 lists = 4 pointers min size = ((size + POOL_EXTRA + align - 1) & -align) - POOL_EXTRA; }