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

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Fujii Masao <masao.fujii@oss.nttdata.com>, Andy Fan <zhihuifan1213@163.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-01-15T19:15:26Z
Lists: pgsql-hackers

Attachments

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.

> But I tend to agree that just
> removing the test is sufficient for now.  Given the lack of failure
> checks in the existing code, and the lack of trouble reports
> suggesting any problem, it's hard to muster enthusiasm for spending
> a lot of effort on this.

Assuming cfbot likes this new version of the patch, I'll commit it shortly.
Thanks for reviewing.

-- 
nathan

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: