On 8/29/22 17:43, Tom Lane wrote: > Tomas Vondra <tomas.von...@enterprisedb.com> writes: >> I suspect it's a pre-existing bug in Slab allocator, because it does this: > >> #define SlabBlockGetChunk(slab, block, idx) \ >> ((MemoryChunk *) ((char *) (block) + sizeof(SlabBlock) \ >> + (idx * slab->fullChunkSize))) > >> and SlabBlock is only 20B, i.e. not a multiple of 8B. Which would mean >> that even if we allocate block and size the chunks carefully (with all >> the MAXALIGN things), we ultimately slice the block incorrectly. > > Right, same conclusion I just came to. But it's not a "pre-existing" > bug, because sizeof(SlabBlock) *was* maxaligned until David added > another field to it. > Yeah, that's true. Still, there was an implicit expectation the size is maxaligned, but it wasn't mentioned anywhere. I don't even recall if I was aware of it when I wrote that code, or if I was just lucky. > I think adding a padding field to SlabBlock would be a less messy > solution than your patch. Maybe, although I find it a bit annoying that we do MAXALIGN() for a bunch of structs, and then in other places we add padding. Maybe not for Slab, but e.g. for Generation. Maybe we should try doing the same thing in all those places. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
- Re: Reducing the chunk header sizes on all memory context ty... David Rowley
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... David Rowley
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Andres Freund
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... David Rowley
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... David Rowley
- Re: Reducing the chunk header sizes on all memory context ty... Tomas Vondra
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... Robert Haas
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane
- Re: Reducing the chunk header sizes on all memory context ty... David Rowley
- Re: Reducing the chunk header sizes on all memory context ty... Tom Lane