postgres.git / summary / log / commit / refs

commit    8b018cb1f90e7e5e793e28dc0085a7af4c330ee1
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Thu Jul 28 15:39:10 2016 +0000
First released in: 9.6.0, 9.1.23, 9.2.18, 9.3.14, 9.4.9, 9.5.4

    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>


contrib/pg_upgrade/server.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c index 3d041efbfd0..ab91f0062cd 100644 --- a/contrib/pg_upgrade/server.c +++ b/contrib/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); [parent: 087ac1dc60fa]