diff options
Diffstat (limited to 'src/backend/storage/buffer/localbuf.c')
-rw-r--r-- | src/backend/storage/buffer/localbuf.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index 30dc8098ed2..03055c96d85 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -497,14 +497,22 @@ void AtEOXact_LocalBuffers(bool isCommit) { #ifdef USE_ASSERT_CHECKING - if (assert_enabled) + if (assert_enabled && LocalRefCount) { + int RefCountErrors = 0; int i; for (i = 0; i < NLocBuffer; i++) { - Assert(LocalRefCount[i] == 0); + if (LocalRefCount[i] != 0) + { + Buffer b = -i - 1; + + PrintBufferLeakWarning(b); + RefCountErrors++; + } } + Assert(RefCountErrors == 0); } #endif } @@ -523,12 +531,20 @@ AtProcExit_LocalBuffers(void) #ifdef USE_ASSERT_CHECKING if (assert_enabled && LocalRefCount) { + int RefCountErrors = 0; int i; for (i = 0; i < NLocBuffer; i++) { - Assert(LocalRefCount[i] == 0); + if (LocalRefCount[i] != 0) + { + Buffer b = -i - 1; + + PrintBufferLeakWarning(b); + RefCountErrors++; + } } + Assert(RefCountErrors == 0); } #endif } |