Re: Segmentation fault on proc exit after dshash_find_or_insert - Mailing list pgsql-hackers

From Amit Langote
Subject Re: Segmentation fault on proc exit after dshash_find_or_insert
Date
Msg-id CA+HiwqHk2qOrCdhU=nqJsU8uMVWkusmyCT3OrWzTYSaFPCw-nQ@mail.gmail.com
Whole thread Raw
In response to Re: Segmentation fault on proc exit after dshash_find_or_insert  (Amit Langote <amitlangote09@gmail.com>)
List 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.

pgsql-hackers by date:

Previous
From: Chao Li
Date:
Subject: Re: Buffer locking is special (hints, checksums, AIO writes)
Next
From: Jacob Champion
Date:
Subject: Re: libpq: Bump protocol version to version 3.2 at least until the first/second beta