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-16T01:18:44Z
Lists: pgsql-hackers
On Thu, Jan 16, 2025 at 12:47 PM Nathan Bossart <nathandbossart@gmail.com> wrote: > On Thu, Jan 16, 2025 at 11:07:41AM +1300, Thomas Munro wrote: > > +1 for your idea of not defining them at all outside the backend, it's > > just confusing noise. > > I tried that, but these extra signals are needed even in the frontend for > pgkill(), etc. Right, of course. (In an unconf in Vancouver, a group of us were plotting that there should be a more explicit control socket to talk to the postmaster, on all OSes, to get current status, recovery progress, etc, and also support shutdown commands more explicitly. If you separately turn all the backend IPC signals into interrupts (CF 5118 and further work like that), and these cluster-level ones you just mentioned into commands in the hypothetical new cluster control protocol, then you don't need fake signals for Windows anymore, but apparently I got ahead of myself with that comment :-)) > My next thought was to simply ignore signal() errors for > the extra signals, but I don't think that's very nice because it just masks > broken code. Finally, I settled on modifying initdb's setup_signals() to > use WIN32 checks instead of checking for the signals themselves. This is > how it's done elsewhere, and this is apparently all that's needed to make > cfbot's Windows run happy. Cool. > I've also attached a 0002 that removes the redefinitions of SIG_ERR and > friends. That looks good on cfbot, but we'll see what the buildfarm has to > say... Ditto.
Commits
-
Remove redefinitions of SIG_* macros in win32_port.h.
- 0dc9c7d200e5 18.0 landed
-
Convert libpgport's pqsignal() to a void function.
- d4a43b283751 18.0 landed
-
Avoid calling pqsignal() with invalid signals on Windows frontends.
- 5cda4fdb0beb 18.0 landed
-
Avoid symbol collisions between pqsignal.c and legacy-pqsignal.c.
- 9a45a89c38f3 18.0 cited
-
Check that MyProcPid == getpid() in backend signal handlers.
- 3b00fdba9f20 17.0 cited
-
Further refactoring of c.h and nearby files.
- ed9b3606dadb 11.0 cited
-
Here's the latest win32 signals code, this time in the form of a patch
- 50491963cb6e 8.0.0 cited
-
Add C version of initdb, from Andrew Dunstan.
- 279598bb7138 8.0.0 cited
-
Allow Win32 to compile under MinGW. Major changes are:
- 12c942383296 7.4.1 cited