From 2ef6c66a2b1ed288a5e4448989d4b85082d22736 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas <heikki.linnakangas@iki.fi> Date: Sun, 21 Dec 2014 21:49:03 +0200 Subject: [PATCH] Fix file descriptor leak at end of recovery. XLogFileInit() returns a file descriptor, which needs to be closed. The leak was short-lived, since the startup process exits shortly afterwards, but it was clearly a bug, nevertheless. Per Coverity report. --- src/backend/access/transam/xlog.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 9e459761797..e5dddd4751b 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5043,8 +5043,15 @@ exitArchiveRecovery(TimeLineID endTLI, XLogRecPtr endOfLog) else { bool use_existent = true; + int fd; - XLogFileInit(startLogSegNo, &use_existent, true); + fd = XLogFileInit(startLogSegNo, &use_existent, true); + + if (close(fd)) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not close log file %s: %m", + XLogFileNameP(ThisTimeLineID, startLogSegNo)))); } /* -- GitLab