show-private-leak-errors-v1.patch

text/plain

Filename: show-private-leak-errors-v1.patch
Type: text/plain
Part: 0
Message: Re: buffer assertion tripping under repeat pgbench load

Patch

Format: unified
Series: patch v1
File+
src/backend/storage/buffer/bufmgr.c 11 3
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index dddb6c0..3fe2e02 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -1696,12 +1696,20 @@ AtEOXact_Buffers(bool isCommit)
 #ifdef USE_ASSERT_CHECKING
 	if (assert_enabled)
 	{
-		int			i;
+		Buffer			i;
+		int			RefCountErrors = 0;
 
-		for (i = 0; i < NBuffers; i++)
+		for (i = 1; i <= NBuffers; i++)
 		{
-			Assert(PrivateRefCount[i] == 0);
+			if (PrivateRefCount[i - 1] != 0)
+			{
+				PrintBufferLeakWarning(i);	
+				RefCountErrors++;
+			}
 		}
+		if (RefCountErrors > 0)
+			elog(WARNING, "buffers with non-zero refcount is %d", RefCountErrors);
+		Assert(RefCountErrors == 0);
 	}
 #endif