pgsql: Fix race condition in multixact code: it's possible to try to

Started by Tom Laneover 20 years ago3 messagescomitters
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

Log Message:
-----------
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.

Modified Files:
--------------
pgsql/src/backend/access/transam:
multixact.c (r1.9 -> r1.10)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/multixact.c.diff?r1=1.9&r2=1.10)

#2Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)
Re: [COMMITTERS] pgsql: Fix race condition in multixact code: it's possible

Does this need to be backpatched?

---------------------------------------------------------------------------

Tom Lane wrote:

Log Message:
-----------
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.

Modified Files:
--------------
pgsql/src/backend/access/transam:
multixact.c (r1.9 -> r1.10)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/multixact.c.diff?r1=1.9&r2=1.10)

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#2)
Re: [COMMITTERS] pgsql: Fix race condition in multixact code: it's possible to try to

Bruce Momjian <pgman@candle.pha.pa.us> writes:

Does this need to be backpatched?

No.

regards, tom lane