Re: Segmentation fault on proc exit after dshash_find_or_insert
amit <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Álvaro Herrera <alvherre@kurilemu.de>, Rahila Syed <rahilasyed90@gmail.com>, Andres Freund <andres@anarazel.de>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-01-15T00:12:35Z
Lists: pgsql-hackers
On Thu, Jan 15, 2026 at 8:57 Amit Langote <amitlangote09@gmail.com> wrote: > On Thu, Jan 15, 2026 at 12:38 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Amit Langote <amitlangote09@gmail.com> writes: > > > On Wed, Jan 14, 2026 at 6:36 PM Álvaro Herrera <alvherre@kurilemu.de> > wrote > > >> Looking at ProcKill, I notice that we do some LWLock ops after its > > >> LWLockReleaseAll() call, which seems a bit silly. Why not do that > right > > >> after the "if (MyProc->lockGroupLeader != NULL)" block instead? > Nothing > > >> uses LWLocks from there on. This can be a separate commit. > > > > > Just to confirm: you're suggesting moving the LWLockReleaseAll() call > > > to after the "if (MyProc->lockGroupLeader != NULL)" block? Makes sense > > > -- odd to release all locks right before then going ahead and > > > acquiring one. Agreed it should be a separate commit. > > > > I think the idea there might be to make sure that we have released > > any pre-existing hold of that lock. Otherwise this could be > > a self-deadlock. > > Hmm, good point. Though with this patch, which adds LWLockReleaseAll() > at the start of shmem_exit(), we would have already released any such > lock before we get to ProcKill(). Scratch that. shmem_exit() is hardly the only caller of ProcKill() and while the existing callers seem to be disciplined, any future callers may not always release locks beforehand. >
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix segfault from releasing locks in detached DSM segments
- f6df78173ef5 14.21 landed
- b926ff1373bb 15.16 landed
- 980b7c7369e4 16.12 landed
- 4071fe900e67 17.8 landed
- 1943ceb38842 18.2 landed
- 9cbb1d21d67e 19 (unreleased) landed