Re: Large join runs out of memory in 8.1

From: Joe Sunday <sunday(at)csh(dot)rit(dot)edu>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: Large join runs out of memory in 8.1
Date: 2006-03-15 17:48:59
Message-ID: 20060315174858.GA9188@csh.rit.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)csh(dot)rit(dot)edu> http://www.csh.rit.edu/~sunday/
Computer Science House, Rochester Inst. Of Technology

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2006-03-15 18:10:41 Re: Large join runs out of memory in 8.1
Previous Message Lin, B (Bill) 2006-03-15 11:55:12 Re: Random hang during commit