Per-Olov Esgard <per-olov.esg...@micronic-mydata.com> writes: > This is my setup: > - linux kernel 2.6.20.16 in a custom OS installation based on Fedora Core > 3, yes I know, stone age :-) > - memory 512 MB > - swap 512 MB > - cpu p4 2.8 GHz - single core - no hyper threading > - db encoding UTF-8 > - client encoding default Latin-1 (Linux client) but UTF-8 used for > Windows clients > - postgresql.conf is attached as well as the environment variables > - we build the postgres server ourselves and the dev env is the same as > the target env (no cross compilation).
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. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general