Re: `pg_ctl init` crashes when run concurrently; semget(2) suspected

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Gavin Panella <gavinpanella(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: `pg_ctl init` crashes when run concurrently; semget(2) suspected
Date: 2025-08-11 23:41:07
Message-ID: 3281956.1754955667@sss.pgh.pa.us
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Gavin Panella <gavinpanella(at)gmail(dot)com> writes:
> With that fix applied to REL_17_5 things are working well. Limiting the
> search sounds like an improvement too.

Cool. I'll push the fix after our release freeze lifts.

> Then I thought: I'm only seeing the log from one of those instances, yet
> they're all going through the same search for free semaphore sets. That's a
> few system calls going to waste. Maybe not important in the big picture,
> but it gave me an idea to left shift nextSemaKey in PGReserveSemaphores,
> i.e. `nextSemaKey = statbuf.st_ino << 4`, to give each pg_ctl process a few
> guaranteed uncontested keys (at least, uncontested between themselves). In
> a small test this eliminated contention for semaphore sets due to
> concurrency. It is more of an optimisation though, rather than a bug fix.

Meh ... if we thought this was worth worrying about, I'd be more
inclined to run the st_ino through a hash function to spread out the
possible values a little more. But I think in nearly all scenarios
it'd be a waste of effort. If collisions were probable we'd have
found this issue years ago.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2025-08-11 23:41:44 Re: index prefetching
Previous Message Jacob Champion 2025-08-11 23:30:30 Re: Annoying warning in SerializeClientConnectionInfo