On 11/23/2017 10:57 AM, Simon Riggs wrote:
On 23 November 2017 at 11:16, Andres Freund <and...@anarazel.de> wrote:
Hi,

On 2017-11-22 18:48:19 +0000, Simon Riggs wrote:
Generational memory allocator

Add new style of memory allocator, known as Generational
appropriate for use in cases where memory is allocated
and then freed in roughly oldest first order (FIFO).

Use new allocator for logical decoding’s reorderbuffer
to significantly reduce memory usage and improve performance.

Looks like it's not quite valgrind clean:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=skink&dt=2017-11-22%2022%3A30%3A01

It doesn't report anything useful that would allow me to fix this.

Please enable some info reporting on the animal.


I agree it would be useful to get the valgrind log from the animal, but I guess you'd need to get valgrind working to fix the issue anyway.

Anyway, the attached patch fixes the issues for me - strictly speaking the Assert is not needed, but it doesn't hurt.

regards
Tomas
diff --git a/src/backend/utils/mmgr/generation.c b/src/backend/utils/mmgr/generation.c
index cdff20f..3e3cacd 100644
--- a/src/backend/utils/mmgr/generation.c
+++ b/src/backend/utils/mmgr/generation.c
@@ -402,9 +402,14 @@ GenerationAlloc(MemoryContext context, Size size)
 
 	chunk = (GenerationChunk *) block->freeptr;
 
+	/* Prepare to initialize the chunk header. */
+	VALGRIND_MAKE_MEM_UNDEFINED(chunk, Generation_CHUNKHDRSZ);
+
 	block->nchunks += 1;
 	block->freeptr += (Generation_CHUNKHDRSZ + chunk_size);
 
+	Assert(block->freeptr <= block->endptr);
+
 	chunk->block = block;
 
 	chunk->context = set;

Reply via email to