summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2016-07-28 15:39:11 +0000
committerTom Lane2016-07-28 15:39:11 +0000
commit737f25cfedf05884c6ffa468b4e1024b5bcc3b81 (patch)
treee120c210b76cfd0adb842ed47c27d66dc141948b
parent5e50a6718ac523be2fd9265463ecbbf21da43f25 (diff)
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>
-rw-r--r--contrib/pg_upgrade/server.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
index 0940e00a725..22555330684 100644
--- a/contrib/pg_upgrade/server.c
+++ b/contrib/pg_upgrade/server.c
@@ -175,10 +175,11 @@ start_postmaster(ClusterInfo *cluster)
{
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);