Re: Unexpected behavior after OOM errors
Matthias van de Meent <boekewurm+postgres@gmail.com>
From: Matthias van de Meent <boekewurm+postgres@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>,
Alexander Lakhin <exclusion@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-06-19T07:22:28Z
Lists: pgsql-hackers
On Fri, 19 Jun 2026 at 01:30, Michael Paquier <michael@paquier.xyz> wrote: > > On Thu, Jun 18, 2026 at 05:27:57PM +0200, Matthias van de Meent wrote: > > By moving StandbyAcquireAccessExclusiveLock's LockAcquire ahead of > > when it links the lock to the transaction, the local data structure > > doesn't know to clean up the lock until after it's acquired, so > > failure in that process won't make error cleanup try to clean up the > > lock. > > Yep, reordering these two actions would take care of the list > inconsistency where the startup process goes down following the ERROR > promoted to a FATAL. > > I have been fingering the idea of backpatching this fix for a few > minutes, actually, but discarded the idea at the end. It does not > require a random pattern to cause the failure, being actionable > through a combination of GUCs as Alexander has proved. Still, the > only consequence is an extra LOG entry telling that the lock is not > being tracked for non-assert builds. Confusing, OK, but not really > critical. > > Comments? Because it fixes an assertion, I'd vote for backpatching; but because the case is handled safely without assertions I also wouldn't be upset if it wasn't backpatched. -Matthias
Commits
-
Make type cache initialization more resilient on re-entry after OOM
- 73dab12719ee 19 (unreleased) landed
-
Make StandbyAcquireAccessExclusiveLock() more resilent with OOMs
- b85f9c00fb88 19 (unreleased) landed
-
Make GetSnapshotData() more resilient on out-of-memory errors
- 29fb598b9cad 19 (unreleased) landed