diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-18 05:25:23 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-03-18 05:25:23 +0000 |
commit | cef01c3355975bdc6724fbc226e85d55316162a3 (patch) | |
tree | 720629ffce00148a15959574bcc3f73b3d028f11 | |
parent | afb66ad8dd7fa731a82a587d48de764fa64b8fbf (diff) | |
download | postgresql-cef01c3355975bdc6724fbc226e85d55316162a3.tar.gz postgresql-cef01c3355975bdc6724fbc226e85d55316162a3.zip |
Avoid infinite loop in InvalidateBuffer if we ourselves are holding
a pin on the victim buffer.
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 59dec8f9ead..bda4544b279 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.186 2005/03/04 20:21:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.187 2005/03/18 05:25:23 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -551,6 +551,9 @@ retry: { UnlockBufHdr_NoHoldoff(buf); LWLockRelease(BufMappingLock); + /* safety check: should definitely not be our *own* pin */ + if (PrivateRefCount[buf->buf_id] != 0) + elog(ERROR, "buffer is pinned in InvalidateBuffer"); WaitIO(buf); goto retry; } |