On Sun, Jan 16, 2022 at 5:34 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > > Andres Freund <and...@anarazel.de> writes: > > I don't immediately see a solution for this, other than to add > > StreamCtl->stop_event (mirroring ->stop_socket) and then convert > > CopyStreamPoll() to use WaitForMultipleObjects(). Microsoft's select() > > doesn't support pipes and there's no socketpair(). > > Any more straightforward ideas? > > From a cursory look at history, it used to be that pg_basebackup had this > > behaviour on all platforms, but it got fixed for other platforms in > > 7834d20b57a by Tom (assuming the problem wasn't present there). > > Hmm --- I see that I thought Windows was unaffected, but I didn't > consider this angle. > > Can we send the child process a signal to kick it off its wait?
No. (1) on Windows it's not a child process, it's a thread. And (2) Windows doesn't have signals. We emulate those *in the backend* for win32, but this problem is in the frontend where that emulation layer doesn't exist. -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/