Allocate freechunks bitmap as part of SlabContext
authorTomas Vondra
Fri, 17 Jan 2020 13:06:28 +0000 (14:06 +0100)
committerTomas Vondra
Fri, 17 Jan 2020 14:31:33 +0000 (15:31 +0100)
commit8c37e4469d13e34d80b6f561f617bd4bfe339c6c
treea3763e97bcf636030eb987bc9ab0d2971467a9e0
parent5ec7bd819c5081d46a7e3bde60dcf7c01d7b8af9
Allocate freechunks bitmap as part of SlabContext

The bitmap used by SlabCheck to cross-check free chunks in a block used
to be allocated for each SlabCheck call, and was never freed. The memory
leak could be fixed by simply adding a pfree call, but it's actually a
bad idea to do any allocations in SlabCheck at all as it assumes the
state of the memory management as a whole is sane.

So instead we allocate the bitmap as part of SlabContext, which means
we don't need to do any allocations in SlabCheck and the bitmap goes
away together with the SlabContext.

Backpatch to 10, where the Slab context was introduced.

Author: Tomas Vondra
Reported-by: Andres Freund
Reviewed-by: Tom Lane
Backpatch-through: 10
Discussion: https://www.postgresql.org/message-id/20200116044119.g45f7pmgz4jmodxj%40alap3.anarazel.de
src/backend/utils/mmgr/slab.c