diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 969e5d63ffba10b593143e49341c5c08746e128e..02b736dbd0bb6fb779d2b3b4808576b6f5db49ad 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);