From: | Simon Riggs <simon(at)2ndQuadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Per-Olov Esgard <Per-Olov(dot)Esgard(at)micronic-mydata(dot)com>, Merlin Moncure <mmoncure(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Is there any problem with pg_notify and memory consumption? |
Date: | 2011-05-27 15:42:12 |
Message-ID: | BANLkTinzPfGGT+SPmpsroNRN73B3ZZskeg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Fri, May 27, 2011 at 4:28 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Hah, I replicated the problem. Here is what's going on: the main loop
> in PostgresMain is intended to do its work in MessageContext. But if
> ProcessCompletedNotifies does any work, it exits with
> CurrentMemoryContext having been reset to TopMemoryContext during
> transaction commit. This means any memory that the main loop doesn't
> bother to explicitly free during the next command cycle will get leaked.
> The reason we haven't noticed this seems to be that the only case where
> any such memory does get leaked is if we have to do encoding conversion
> on the incoming command. Also, the bug has only been there since 9.0.
>
> I think the right fix is to make sure that ProcessCompletedNotifies
> saves and restores the call-time CurrentMemoryContext.
Can we put a WARNING in there if we try to commit while in TopMemoryContext?
That way we'll trap any future leaks in core/add-on code.
--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-05-27 15:43:13 | Re: Is there any problem with pg_notify and memory consumption? |
Previous Message | Merlin Moncure | 2011-05-27 15:39:22 | Re: copy record? |