Bruce Momjian wrote:
>
> 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.
Crash comes from AllocSetReset()->AllocSetFree() - printf in
pfree will not help.
I would suggest to add printf to AllocSetFree()/AllocSetAlloc()...
Vadim