pgsql: Make GetSnapshotData() more resilient on out-of-memory errors

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Make GetSnapshotData() more resilient on out-of-memory errors
Date: 2026-11-12 06:01:38
Message-ID: E1xRNsQ-00000000Oya-1Csw@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Make GetSnapshotData() more resilient on out-of-memory errors

If the allocation of Snapshot->subxip fails, a follow-up call of
GetSnapshotData() would see a partially-initialized snapshot, causing a
NULL dereference on reentry when using "subxip" because only "xip" would
be allocated. In the event of an out-of-memory error when allocating
"subxip", "xip" is now reset before throwing an ERROR, so as Snapshots
can be allocated and handled gracefully on retry.

Note: This has been originally applied in v19~ as of 29fb598b9cad, and
was initially not backpatched. This issue has been seen in the field on
older stable branches, hence the backpatch now.

Reported-by: Alexander Lakhin <exclusion(at)gmail(dot)com>
Author: Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com>
Discussion: https://postgr.es/m/e77acaac-a1b3-40b3-99ee-5769b4e453e4@gmail.com
Discussion: https://postgr.es/m/CAJ7c6TO+7rrN5H_Odd8PLdmrEa4MgeoJ2AqnTydOcy=AyZvDsQ@mail.gmail.com
Backpatch-through: 15

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/a123cc8429c0c07834b8d6a97b99d05eeb8e012e

Modified Files
--------------
src/backend/storage/ipc/procarray.c | 8 ++++++++
1 file changed, 8 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2026-11-12 06:02:20 Re: pgsql: Make GetSnapshotData() more resilient on out-of-memory errors
Previous Message Amit Kapila 2026-11-12 05:58:32 pgsql: Fix crash decoding a change to a partition pending detach.