OK, I have a way to debug this.
Add to palloc and pfree a printf like:
printf("palloc: %d\n", mem);
printf("pfree : %d\n", mem);
The printf's should go after the memory is allocated in palloc, and
before it is free'ed in pfree().
and then run the backend and issue the query causing the problem, and
grab the lines from the postmaster log file. Check the last pfree
value, because that is the one that is crashing it. Check the list to
see if it has been palloc'ed. If it has, was it pfree'ed by someone
else, and who palloc'ed it. If it is not on the list, figure out how it
got on to the palloc list.
--
Bruce Momjian | 830 Blythe Avenue
maillist@candle.pha.pa.us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)