diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index 54a2b3bd339c6351d147a264b5f745e07a89d83e..3c54956e70f3b669545121eaf7c5933cfefcb5da 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -210,8 +210,14 @@ SysLoggerMain(int argc, char *argv[])
 		close(fileno(stderr));
 		if (fd != -1)
 		{
-			dup2(fd, fileno(stdout));
-			dup2(fd, fileno(stderr));
+			if (dup2(fd, fileno(stdout)) < 0)
+					ereport(FATAL,
+							(errcode_for_file_access(),
+							 errmsg("could not redirect stdout: %m")));
+			if (dup2(fd, fileno(stderr)) < 0)
+					ereport(FATAL,
+							(errcode_for_file_access(),
+							 errmsg("could not redirect stderr: %m")));
 			close(fd);
 		}
 	}