show-private-leak-errors-v1.patch
text/plain
Filename: show-private-leak-errors-v1.patch
Type: text/plain
Part: 0
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