From 286a9c26b55a9201ef69463d33b6c8db397ada5f Mon Sep 17 00:00:00 2001 From: Matthias van de Meent Date: Tue, 16 Jun 2026 15:07:40 +0200 Subject: [PATCH v1 2/2] Make GetSnapshotData more resilient against OOM errors --- src/backend/storage/ipc/procarray.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index f540bb6b23f..d23ce3800e4 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -2158,9 +2158,20 @@ GetSnapshotData(Snapshot snapshot) snapshot->subxip = (TransactionId *) malloc(GetMaxSnapshotSubxidCount() * sizeof(TransactionId)); if (snapshot->subxip == NULL) + { + /* + * Clean up Snapshot's state ahead of throwing the error -- it's + * not guaranteed that this Snapshot is not reused. + * Additionally, we'd possibly leak the xip allocation, so + * better make sure to clean this up. + */ + free(snapshot->xip); + snapshot->xip = NULL; + ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); + } } /* -- 2.50.1 (Apple Git-155)