• Tomas Vondra's avatar
    Allocate freechunks bitmap as part of SlabContext · 543852fd
    Tomas Vondra authored
    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
    543852fd
slab.c 23.6 KB