Re: Large join runs out of memory in 8.1 - Mailing list pgsql-bugs

From Joe Sunday
Subject Re: Large join runs out of memory in 8.1
Date
Msg-id 20060315174858.GA9188@csh.rit.edu
Whole thread Raw
In response to Re: Large join runs out of memory in 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Large join runs out of memory in 8.1
List pgsql-bugs
On Tue, Mar 14, 2006 at 11:29:57PM -0500, Tom Lane wrote:

> It's not the easiest sort of problem to debug :-( ...
>
> What I'd try is first letting the problem case run for a bit, then
> stopping it with gdb and dumping out a few Kb of the frontmost memory
> block in the ExecutorState context.  Sometimes, looking at the data

Can you point me a little more in that direction? I can't figure out how
to get a handle to that context.

> that's being leaked is enough to give you a clue.  If not, try setting a
> breakpoint at AllocSetAlloc and trying to see where the majority of
> calls are coming from.  It'll be tedious ...

This is the pattern I seemed to get:

3 calls here:
#0  0x1021aa80 in AllocSetAlloc ()
#1  0x1021ba0c in MemoryContextAlloc ()
#2  0x1016de48 in BufFileCreateTemp ()
#3  0x100fcbb4 in ExecHashJoinSaveTuple ()
#4  0x100fbe44 in ExecHashTableInsert ()
#5  0x100fc858 in MultiExecHash ()
#6  0x100ef6d8 in MultiExecProcNode ()
#7  0x100fd800 in ExecHashJoin ()
#8  0x100ef8a8 in ExecProcNode ()
#9  0x100edea8 in ExecutorRun ()
#10 0x1018519c in ProcessQuery ()
#11 0x10185850 in PortalRun ()
#12 0x1018084c in exec_simple_query ()
#13 0x101825b0 in PostgresMain ()
#14 0x1015510c in ServerLoop ()
#15 0x10155d80 in PostmasterMain ()
#16 0x101101e8 in main ()

1 call here:
#0  0x1021aa80 in AllocSetAlloc ()
#1  0x1021bb1c in MemoryContextAllocZero ()
#2  0x100324d4 in heap_form_tuple ()
#3  0x100f5810 in ExecCopySlotTuple ()
#4  0x100f5c04 in ExecMaterializeSlot ()
#5  0x100fc848 in MultiExecHash ()
#6  0x100ef6d8 in MultiExecProcNode ()
#7  0x100fd800 in ExecHashJoin ()
#8  0x100ef8a8 in ExecProcNode ()
#9  0x100edea8 in ExecutorRun ()
#10 0x1018519c in ProcessQuery ()
#11 0x10185850 in PortalRun ()
#12 0x1018084c in exec_simple_query ()
#13 0x101825b0 in PostgresMain ()
#14 0x1015510c in ServerLoop ()
#15 0x10155d80 in PostmasterMain ()
#16 0x101101e8 in main ()

1 call here:
#0  0x1021aa80 in AllocSetAlloc ()
#1  0x1021ba0c in MemoryContextAlloc ()
#2  0x1016c530 in make_database_relative ()
#3  0x1016cf7c in FileNameOpenFile ()
#4  0x1016d02c in OpenTemporaryFile ()
#5  0x1016de10 in BufFileCreateTemp ()
#6  0x100fcbb4 in ExecHashJoinSaveTuple ()
#7  0x100fbe44 in ExecHashTableInsert ()
#8  0x100fc858 in MultiExecHash ()
#9  0x100ef6d8 in MultiExecProcNode ()
#10 0x100fd800 in ExecHashJoin ()
#11 0x100ef8a8 in ExecProcNode ()
#12 0x100edea8 in ExecutorRun ()
#13 0x1018519c in ProcessQuery ()
#14 0x10185850 in PortalRun ()
#15 0x1018084c in exec_simple_query ()
#16 0x101825b0 in PostgresMain ()
#17 0x1015510c in ServerLoop ()
#18 0x10155d80 in PostmasterMain ()
#19 0x101101e8 in main ()

Repeat.

--Joe

--
Joe Sunday <sunday@csh.rit.edu>  http://www.csh.rit.edu/~sunday/
Computer Science House, Rochester Inst. Of Technology

pgsql-bugs by date:

Previous
From: "Lin, B \(Bill\)"
Date:
Subject: Re: Random hang during commit
Next
From: Tom Lane
Date:
Subject: Re: Large join runs out of memory in 8.1