diff --git a/include/haproxy/pool-t.h b/include/haproxy/pool-t.h index 4a8752ad6..52765a627 100644 --- a/include/haproxy/pool-t.h +++ b/include/haproxy/pool-t.h @@ -71,6 +71,8 @@ struct pool_cache_head { struct pool_registration { struct list list; /* link element */ const char *name; /* name of the pool */ + const char *file; /* where the pool is declared */ + unsigned int line; /* line in the file where the pool is declared, 0 if none */ unsigned int size; /* expected object size */ unsigned int flags; /* MEM_F_* */ unsigned int align; /* expected alignment; 0=unspecified */ diff --git a/include/haproxy/pool.h b/include/haproxy/pool.h index 2c9e2e75b..108e00e5f 100644 --- a/include/haproxy/pool.h +++ b/include/haproxy/pool.h @@ -36,6 +36,8 @@ #define __REGISTER_POOL(_line, _ptr, _name, _size) \ static struct pool_registration __pool_reg_##_line = { \ .name = _name, \ + .file = __FILE__, \ + .line = __LINE__, \ .size = _size, \ .flags = MEM_F_STATREG, \ .align = 0, \ diff --git a/src/pool.c b/src/pool.c index 67ce7060f..c3eb98189 100644 --- a/src/pool.c +++ b/src/pool.c @@ -1321,8 +1321,12 @@ void dump_pools_to_trash(int how, int max, const char *pfx) if (detailed) { struct pool_registration *reg; - list_for_each_entry(reg, &pool_info[i].entry->regs, list) - chunk_appendf(&trash, " > %-12s: size=%u flags=%#x align=%u\n", reg->name, reg->size, reg->flags, reg->align); + list_for_each_entry(reg, &pool_info[i].entry->regs, list) { + chunk_appendf(&trash, " > %-12s: size=%u flags=%#x align=%u", reg->name, reg->size, reg->flags, reg->align); + if (reg->file && reg->line) + chunk_appendf(&trash, " [%s:%u]", reg->file, reg->line); + chunk_appendf(&trash, "\n"); + } } }