From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: "cache reference leak" and "problem in alloc set" warnings |
Date: | 2006-08-17 14:38:46 |
Message-ID: | 6178.1155825526@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> writes:
> I've still biten by a single "write past chunk" error while returning a
> record in PL/scheme:
> WARNING: problem in alloc set ExprContext: detected write past chunk
> end in block 0x84a0598, chunk 0x84a0c84
The actual bug, almost certainly, is that you're miscomputing the space
needed for a variable-size palloc request. But tracking that down will
be hard until you find out which chunk it is.
Do you have a sequence that will make the problem happen consistently at
the same address? If so, you can use a gdb watchpoint to find out where
the write-past-end is happening. Or use a conditional breakpoint in
AllocSetAlloc to try to identify where the chunk is handed out.
Another possibility is to set a breakpoint where the warning is emitted
and take a look at the contents of the chunk to see if you can identify
it; that wouldn't require knowing the target chunk address in advance.
BTW, if I recall that code correctly, the "chunk address" in the message
is probably the address of the start of the overhead data for the chunk,
not the usable-space start address that is passed back by palloc.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2006-08-17 15:08:58 | Re: pgsql-patches reply-to (was Re: [PATCHES] selecting |
Previous Message | Alvaro Herrera | 2006-08-17 14:37:28 | Re: pgsql-patches reply-to (was Re: [PATCHES] selecting |