Re: Clean up NamedLWLockTranche stuff
Nathan Bossart <nathandbossart@gmail.com>
From: Nathan Bossart <nathandbossart@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Sami Imseih <samimseih@gmail.com>, Robert Haas <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2026-03-27T22:05:06Z
Lists: pgsql-hackers
Attachments
- 0001-fix-RequestNamedLWLockTranche.patch (text/plain)
On Fri, Mar 27, 2026 at 04:50:12PM -0500, Nathan Bossart wrote:
> On Fri, Mar 27, 2026 at 05:22:33PM -0400, Andres Freund wrote:
>> TRAP: failed Assert("MemoryContextIsValid(context)"), File: "mcxt.c", Line: 1270, PID: 230491
>> [...](ExceptionalCondition+0x54)[0xaaaae186c204]
>> [...](MemoryContextAllocExtended+0x0)[0xaaaae18a2a24]
>> [...](RequestNamedLWLockTranche+0x6c)[0xaaaae16e7310]
>> [...](process_shmem_requests+0x28)[0xaaaae1881628]
>> [...](PostgresSingleUserMain+0xc4)[0xaaaae1701a34]
>> [...](main+0x6ac)[0xaaaae12a2adc]
>> /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe8)[0xffff99713dd8]
>> [...](+0xf2b98)[0xaaaae12a2b98]
>> Aborted
>> pg_rewind: error: postgres single-user mode in target cluster failed
>
> Hm. AFAICT PostmasterContext isn't created in single-user mode, and the
> commit in question has RequestNamedLWLockTranche() allocate requests there.
> I guess the idea is to allow backends to free that memory after forking
> from postmaster, but we don't do that for the NamedLWLockTrancheRequests
> list. Maybe we should surround the last part of that function with
> MemoryContextSwitchTo(...) to either TopMemoryContext or PostmasterContext
> depending on whether we're in single-user mode.
Concretely, like the attached.
--
nathan
Commits
-
Fix outdated comment on MainLWLockArray
- bd365b1ae510 19 (unreleased) landed
-
Fix RequestNamedLWLockTranche in single-user mode
- 2407c8db159d 19 (unreleased) landed
-
Minor comment fixes to yesterday's LWLock tranche refactoring
- 98993150c0a4 19 (unreleased) landed
-
Move ShmemIndexLock into ShmemAllocator
- 06d859aaf4e9 19 (unreleased) landed
-
Use ShmemInitStruct to allocate lwlock.c's shared memory
- 30d432502bf4 19 (unreleased) landed
-
Use a separate spinlock to protect LWLockTranches
- 12e3e0f2c8f7 19 (unreleased) landed
-
Refactor how user-defined LWLock tranches are stored in shmem
- d6eba30a245c 19 (unreleased) landed
-
Rename MAX_NAMED_TRANCHES to MAX_USER_DEFINED_TRANCHES
- cc88481aeb98 19 (unreleased) landed
-
Fix re-initialization of LWLock-related shared memory.
- c3cc2ab87d72 19 (unreleased) cited