]> granicus.if.org Git - postgresql/commit
Fix race condition in multixact code: it's possible to try to read a
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Oct 2005 17:27:29 +0000 (17:27 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Oct 2005 17:27:29 +0000 (17:27 +0000)
commit1986ca5ce5031b27a0e35ea0ab7d7c2f479e2afc
treed46890abf2c6e33e71e237ee1c6fc4af1249e9df
parent21b748e76acc54ad0c3715e340fdff0865e201eb
Fix race condition in multixact code: it's possible to try to read a
multixact's starting offset before the offset has been stored into the
SLRU file.  A simple fix would be to hold the MultiXactGenLock until the
offset has been stored, but that looks like a big concurrency hit.  Instead
rely on knowledge that unset offsets will be zero, and loop when we see
a zero.  This requires a little extra hacking to ensure that zero is never
a valid value for the offset.  Problem reported by Matteo Beccati, fix
ideas from Martijn van Oosterhout, Alvaro Herrera, and Tom Lane.
src/backend/access/transam/multixact.c