Avoid torn copy of the control file in base backups Base backups read the control file (pg_control) from disk without any protection against concurrent writes by the server, making it exposed to torn copies. Attempting to use such a control file at startup would cause a failure with a CRC not matching.
Base backups now read the control file while holding ControlFileLock. c558e6fd92f has done the same for some SQL functions. The contents of the file are saved in memory and sent over the wire as-is. Backpatch down to v15. This issue is older than v15 but v14 is left out of the picture as it is going to be EOL soon, so it does not seem worth taking a risk for. Author: David Steele <[email protected]> Reviewed-by: Heikki Linnakangas <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 15 Branch ------ REL_18_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/8cddd5fc8fe80efccdae2fd4aa9b99d94d740f95 Modified Files -------------- src/backend/backup/basebackup.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-)
