It seems to me that we're allocating shared memory for SLRU lwlocks twice, unless I'm missing something.
I think you are right.
Did you check previous versions? i.e. should it be applyed to previous branches?? I suppose yes, to minimize code difference.
Also I'd like an idea to add Assert(offset <= SimpleLruShmemSize(nslots, nlsns)) at the end of SimpleLruInit()
SimpleLruShmemSize() calculates total SLRU shared memory size including lwlocks size. SimpleLruInit() starts with line shared = (SlruShared) ShmemInitStruct(name, SimpleLruShmemSize(nslots, nlsns), &found); which allocates SLRU shared memory (LWLocks size is included because SimpleLruShmemSize() is used for size computation). Following line allocates shared memory for LWLocks again: shared->buffer_locks = (LWLockPadded *) ShmemAlloc(sizeof(LWLockPadded) * nslots); Attached patch fixes that by removing extra ShmemAlloc for SLRU. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
-- Teodor Sigaev E-mail: teo...@sigaev.ru WWW: http://www.sigaev.ru/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers