From eb97aa7e65627c602f559207a5a104cacbdd585f Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Sun, 23 Apr 2017 15:48:31 -0700 Subject: [PATCH] Zero padding in replication origin's checkpointed on disk-state. This seems to be largely cosmetic, avoiding valgrind bleats and the like. The uninitialized padding influences the CRC of the on-disk entry, but because it's also used when verifying the CRC, that doesn't cause spurious failures. Backpatch nonetheless. It's a bit unfortunate that contrib/test_decoding/sql/replorigin.sql doesn't exercise the checkpoint path, but checkpoints are fairly expensive on weaker machines, and we'd have to stop/start for that to be meaningful. Author: Andres Freund Discussion: https://postgr.es/m/20170422183123.w2jgiuxtts7qrqaq@alap3.anarazel.de Backpatch: 9.5, where replication origins were introduced --- src/backend/replication/logical/origin.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index 5eaf863e02..c17f8ad277 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -559,6 +559,9 @@ CheckPointReplicationOrigin(void) if (curstate->roident == InvalidRepOriginId) continue; + /* zero, to avoid uninitialized padding bytes */ + memset(&disk_state, 0, sizeof(disk_state)); + LWLockAcquire(&curstate->lock, LW_SHARED); disk_state.roident = curstate->roident; -- 2.40.0