Allocate freechunks bitmap as part of SlabContext
authorTomas Vondra <tomas.vondra@postgresql.org>
Fri, 17 Jan 2020 13:06:28 +0000 (14:06 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Fri, 17 Jan 2020 14:29:11 +0000 (15:29 +0100)
commit543852fd8bf0adc56192aeb25ff83f1a12c30368
treec66e3714d6e234d2b5062d36c3d70fb081754f44
parent4b0e0f67f2f16c077b4e5c8a3d70c6af4355db09
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