Skip site navigation (1) Skip section navigation (2)

Re: MemoryContextCheck()

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Karel Zak <zakkr(at)zf(dot)jcu(dot)cz>
Cc: pgsql-patches <pgsql-patches(at)postgreSQL(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: MemoryContextCheck()
Date: 2000-07-11 14:30:05
Message-ID: 200007111430.KAA28392@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-patches
Applied.


> 
>  Here is the patch with memory leak checker. This checker allow detect
> in-chunk leaks, overwrite-next-chunk leaks and overwrite block-freeptr leaks.
> 
> A in-chunk leak --- if something overwrite space after wanted (via palloc()
> size, but it is still inside chunk. For example 
> 
> 	x = palloc(12);		/* create 16b chunk */
> 	memset(x, '#', 13);
> 
> this leak is in the current source total invisible, because chunk is 16b and
> leak is in the "align space".
> 
>  For this feature I add data_size to StandardChunk, and all memory which go
> from AllocSetAlloc() is marked as 0x7F.
> 
>  The MemoryContextCheck() is compiled '#ifdef USE_ASSERT_CHECKING'. 
> 
> I add this checking to 'tcop/postgres.c' and is active after each backend
> query, but it is probably not sufficient, because some MemoryContext exist
> only during memory processing --- will good if someone who known where
> it is needful (Tom:-) add it for others contexts;
> 
>  A problem in the current source is that we have still some malloc()
> allocation that is not needful and this allocation is total invisible for
> all context routines. For example Dllist in backend (pretty dirty it is in
> catcache where values in Dllist are palloc-ed, but list is malloc-ed).
> --- and BTW. this Dllist design stand in the way for query cache :-)
> 
>  Tom, if you agree I start replace some mallocs.
> 
>  BTW. --- Tom, have you idea for across transaction presistent allocation for
>           SQL functions? (like regex - now it is via malloc) 
> 
> 
>  I almost forget. I add one if() to AllocSetAlloc(), for 'size' that are 
> greater than ALLOC_BIGCHUNK_LIMIT is not needful check AllocSetFreeIndex(), 
> because 'fidx' is always 'ALLOCSET_NUM_FREELISTS - 1'. It a little brisk up 
> allocation for very large chunks. Right?
>  
> 						Karel
Content-Description: 

[ application/x-gzip is not supported, skipping... ]


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

Responses

pgsql-patches by date

Next:From: Bruce MomjianDate: 2000-07-11 14:30:57
Subject: Re: MemoryContextCheck()
Previous:From: Karel ZakDate: 2000-07-11 07:43:10
Subject: Re: MemoryContextCheck()

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group