Обсуждение: pg_user crash
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)
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