mirror of
https://github.com/postgres/postgres.git
synced 2025-05-12 16:21:30 +03:00
Log memory context stats to stderr when reporting a 'Memory exhausted'
error, so as to provide a starting point for debugging.
This commit is contained in:
parent
e69b8d4655
commit
deb21f0f80
@ -11,7 +11,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.35 2000/12/05 23:40:36 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.36 2001/01/06 21:59:39 tgl Exp $
|
||||||
*
|
*
|
||||||
* NOTE:
|
* NOTE:
|
||||||
* This is a new (Feb. 05, 1999) implementation of the allocation set
|
* This is a new (Feb. 05, 1999) implementation of the allocation set
|
||||||
@ -324,7 +324,10 @@ AllocSetContextCreate(MemoryContext parent,
|
|||||||
|
|
||||||
block = (AllocBlock) malloc(blksize);
|
block = (AllocBlock) malloc(blksize);
|
||||||
if (block == NULL)
|
if (block == NULL)
|
||||||
|
{
|
||||||
|
MemoryContextStats(TopMemoryContext);
|
||||||
elog(ERROR, "Memory exhausted in AllocSetContextCreate()");
|
elog(ERROR, "Memory exhausted in AllocSetContextCreate()");
|
||||||
|
}
|
||||||
block->aset = context;
|
block->aset = context;
|
||||||
block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ;
|
block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ;
|
||||||
block->endptr = ((char *) block) + blksize;
|
block->endptr = ((char *) block) + blksize;
|
||||||
@ -482,7 +485,10 @@ AllocSetAlloc(MemoryContext context, Size size)
|
|||||||
blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ;
|
blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ;
|
||||||
block = (AllocBlock) malloc(blksize);
|
block = (AllocBlock) malloc(blksize);
|
||||||
if (block == NULL)
|
if (block == NULL)
|
||||||
|
{
|
||||||
|
MemoryContextStats(TopMemoryContext);
|
||||||
elog(ERROR, "Memory exhausted in AllocSetAlloc()");
|
elog(ERROR, "Memory exhausted in AllocSetAlloc()");
|
||||||
|
}
|
||||||
block->aset = set;
|
block->aset = set;
|
||||||
block->freeptr = block->endptr = ((char *) block) + blksize;
|
block->freeptr = block->endptr = ((char *) block) + blksize;
|
||||||
|
|
||||||
@ -673,7 +679,10 @@ AllocSetAlloc(MemoryContext context, Size size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (block == NULL)
|
if (block == NULL)
|
||||||
|
{
|
||||||
|
MemoryContextStats(TopMemoryContext);
|
||||||
elog(ERROR, "Memory exhausted in AllocSetAlloc()");
|
elog(ERROR, "Memory exhausted in AllocSetAlloc()");
|
||||||
|
}
|
||||||
|
|
||||||
block->aset = set;
|
block->aset = set;
|
||||||
block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ;
|
block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ;
|
||||||
@ -843,7 +852,10 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size)
|
|||||||
blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ;
|
blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ;
|
||||||
block = (AllocBlock) realloc(block, blksize);
|
block = (AllocBlock) realloc(block, blksize);
|
||||||
if (block == NULL)
|
if (block == NULL)
|
||||||
|
{
|
||||||
|
MemoryContextStats(TopMemoryContext);
|
||||||
elog(ERROR, "Memory exhausted in AllocSetReAlloc()");
|
elog(ERROR, "Memory exhausted in AllocSetReAlloc()");
|
||||||
|
}
|
||||||
block->freeptr = block->endptr = ((char *) block) + blksize;
|
block->freeptr = block->endptr = ((char *) block) + blksize;
|
||||||
|
|
||||||
/* Update pointers since block has likely been moved */
|
/* Update pointers since block has likely been moved */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user