Package: postgresql-common Version: 199 When I execute service postgresql start I observe that logfile descriptor will leak into postmaster and every backend. This is not fd opened by PG's syslogger.
root@rc1b-tl7je3ulcm4z9v3c ~ # lsof | grep 'postgresql-10-data.log' | grep postgres | grep '/var/log' postgres 289999 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290011 postgres 1w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290011 postgres 2w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290011 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290011 postgres 13w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290013 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290014 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290015 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290016 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290017 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290018 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290019 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290020 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290036 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290211 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290256 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290257 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log postgres 290258 postgres 4w REG 253,1 103172283 131900 /var/log/postgresql/postgresql-10-data.log When logfile is rotated, descriptor remain to be open, but occupied space is not accounted by df. This leads to incorrect free space estimation on cluster. When logfile is big enough during cluster start this can result in sudden cluster stop, which could be prevented by monitoring. If I apply following patch descriptor stops leaking. I use Ubuntu. Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic Best regards, Andrey Borodin. diff --git a/pg_ctlcluster b/pg_ctlcluster index 1690d3d..6039659 100755 --- a/pg_ctlcluster +++ b/pg_ctlcluster @@ -207,9 +207,8 @@ sub start { } else { setsid or error "could not start session: $!"; if ($info{'logfile'}) { - my $fd = POSIX::open($info{'logfile'}, POSIX::O_WRONLY|POSIX::O_APPEND|POSIX::O_CREAT) or error "Could not open logfile $info{'logfile'}"; - dup2($fd, 1); - dup2($fd, 2); + open(STDOUT, ">>$info{logfile}") or die $!; + open(STDERR, '>&STDOUT') or die $!; } exec $pg_ctl @options or error "could not exec $pg_ctl @options: $!"; }