Re: memory leak in auto_explain

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: japin <japinli(at)hotmail(dot)com>
Cc: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: memory leak in auto_explain
Date: 2021-02-02 18:13:42
Message-ID: 3754771.1612289622@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

japin <japinli(at)hotmail(dot)com> writes:
> Here's my analysis:
> 1) In the explain_ExecutorEnd(), it will create a ExplainState on SQL function
> memory context, which is a long-lived, cause the memory grow up.

Yeah, agreed. I think people looking at this have assumed that the
ExecutorEnd hook would automatically be running in the executor's
per-query context, but that's not so; we haven't yet entered
standard_ExecutorEnd where the context switch is. The caller's
context is likely to be much longer-lived than the executor's.

I think we should put the switch one level further out than you have
it here, just to be sure that InstrEndLoop is covered too (that doesn't
allocate memory, but auto_explain shouldn't assume that). Otherwise
seems like a good fix.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2021-02-02 19:36:19 Re: bugfix - plpgsql - statement counter is incremented 2x for FOR stmt
Previous Message Pavel Stehule 2021-02-02 17:20:46 bugfix - plpgsql - statement counter is incremented 2x for FOR stmt