public inbox for [email protected]
help / color / mirror / Atom feedFrom: Heikki Linnakangas <[email protected]>
To: [email protected]
Subject: pgsql: Remove sketchy TerminateThread() call on Ctrl-C on Windows
Date: Wed, 08 Jul 2026 15:45:28 +0000
Message-ID: <[email protected]> (raw)
Remove sketchy TerminateThread() call on Ctrl-C on Windows
When pg_dump or pg_restore --jobs N is interrupted with Ctrl-C on
Windows, we cancel all queries, but we don't want the cancellations to
be reported as errors to the user in the short time before the whole
process exits. That was previously achieved by calling
TerminateThread() on each worker thread before sending the cancel
message, but that doesn't appear to be 100% safe: the implementations
of write() and the socket calls inside PQcancel() might acquire user
space locks that were held by the terminated threads. (write()
certainly does that.)
Instead of silencing the threads in such a sketchy way this now sets a
volatile flag before sending any cancel requests that tells the
threads to not log errors anymore. (Instead of a volatile, it would be
better to use an atomic operation here, but that has to wait until we
add support for atomics on the frontend.)
Note that this also stops using pg_fatal() and exit to exit() from
workers on failure and instead use pg_log_error combined with
exit_nicely. If a query fails in a worker we want it to kill the
worker not the whole process. On Unix that's currently the same thing,
but on Windows workers are threads.
Author: Jelte Fennema-Nio <[email protected]>
Reviewed-by: Bryan Green <[email protected]>
Reviewed-by: Thomas Munro <[email protected]>
Discussion: https://www.postgresql.org/message-id/[email protected]
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/ad7877b00a4232d71bb4cb63c22f9d748e65e3f7
Modified Files
--------------
src/bin/pg_dump/parallel.c | 50 ++++++++++++--------------
src/bin/pg_dump/pg_backup_archiver.c | 69 +++++++++++++++++++-----------------
src/bin/pg_dump/pg_backup_db.c | 30 +++++++++++-----
src/bin/pg_dump/pg_backup_utils.c | 38 ++++++++++++++++++++
src/bin/pg_dump/pg_backup_utils.h | 21 +++++++++++
5 files changed, 141 insertions(+), 67 deletions(-)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: pgsql: Remove sketchy TerminateThread() call on Ctrl-C on Windows
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox