Re: convert libpgport's pqsignal() to a void function

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Fujii Masao <masao.fujii@oss.nttdata.com>, Andy Fan <zhihuifan1213@163.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-01-15T19:21:08Z
Lists: pgsql-hackers
On Thu, Jan 16, 2025 at 8:15 AM Nathan Bossart <nathandbossart@gmail.com> wrote:
> On Tue, Jan 14, 2025 at 11:08:05PM -0500, Tom Lane wrote:
> > Nathan Bossart <nathandbossart@gmail.com> writes:
> >> My guess is that this has something to do with redefining SIG_ERR in
> >> win32_port.h.  We might be able to use push_macro/pop_macro to keep the old
> >> value around, but at the moment I'm leaning towards just removing the
> >> assertion in that path.
> >
> > I wonder why we redefine those values?
>
> I wondered the same.  Those redefines have been there since commit 5049196,
> but I haven't been able to find any real discussion in the archives about
> it.  Maybe I will bug Magnus about it sometime, in case he happens to
> remember the reason.

My guess would be: perhaps some ancient version of MinGW didn't define
them?  They're defined by MinGW and native signal.h now and they have
the same values, so we should remove them I think.

Assertion failed: 0, file ../src/port/pqsignal.c, line 147

Could be due to calling native signal() with a signal number other
than the 6 values required to work by the C standard?



Commits

  1. Remove redefinitions of SIG_* macros in win32_port.h.

  2. Convert libpgport's pqsignal() to a void function.

  3. Avoid calling pqsignal() with invalid signals on Windows frontends.

  4. Avoid symbol collisions between pqsignal.c and legacy-pqsignal.c.

  5. Check that MyProcPid == getpid() in backend signal handlers.

  6. Further refactoring of c.h and nearby files.

  7. Here's the latest win32 signals code, this time in the form of a patch

  8. Add C version of initdb, from Andrew Dunstan.

  9. Allow Win32 to compile under MinGW. Major changes are: