]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Register atexit hook only once in pg_upgrade.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 28 Jul 2016 15:39:11 +0000 (11:39 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 28 Jul 2016 15:39:11 +0000 (11:39 -0400)
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>

contrib/pg_upgrade/server.c

index e86540b9d79861aac78c000dae1b256a419e9bc4..a4c2b6d50d1c7a5e82226bc2f5b678b52187c119 100644 (file)
@@ -144,9 +144,10 @@ start_postmaster(ClusterInfo *cluster)
 {
        char            cmd[MAXPGPATH];
        PGconn     *conn;
-       bool            exit_hook_registered = false;
        int                     pg_ctl_return = 0;
 
+       static bool exit_hook_registered = false;
+
 #ifndef WIN32
        char       *output_filename = log_opts.filename;
 #else