aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-07-28 11:39:10 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-07-28 11:39:10 -0400
commitd9e74959a7fabe57e38bdda430aa662445bd1dd6 (patch)
treeff6bdef320a18d39070800b5e4df987951b6b3aa /src
parentde8c92e6caf0cd8683b23a222d4bd88a90496840 (diff)
downloadpostgresql-d9e74959a7fabe57e38bdda430aa662445bd1dd6.tar.gz
postgresql-d9e74959a7fabe57e38bdda430aa662445bd1dd6.zip
Register atexit hook only once in pg_upgrade.
start_postmaster() registered stop_postmaster_atexit as an atexit(3) callback each time through, although the obvious intention was to do so only once per program run. The extra registrations were harmless, so long as we didn't exceed ATEXIT_MAX, but still it's a bug. Artur Zakirov, with bikeshedding by Kyotaro Horiguchi and me Discussion: <d279e817-02b5-caa6-215f-cfb05dce109a@postgrespro.ru>
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_upgrade/server.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 969e5d63ffb..02b736dbd0b 100644
--- a/src/bin/pg_upgrade/server.c
+++ b/src/bin/pg_upgrade/server.c
@@ -174,10 +174,11 @@ start_postmaster(ClusterInfo *cluster, bool throw_error)
{
char cmd[MAXPGPATH * 4 + 1000];
PGconn *conn;
- bool exit_hook_registered = false;
bool pg_ctl_return = false;
char socket_string[MAXPGPATH + 200];
+ static bool exit_hook_registered = false;
+
if (!exit_hook_registered)
{
atexit(stop_postmaster_atexit);