Skip site navigation (1) Skip section navigation (2)

BUG #6785: Memory Leak in plpgsql

From: andervalbh(at)gmail(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #6785: Memory Leak in plpgsql
Date: 2012-07-30 13:15:37
Message-ID: E1Svpov-0005ND-Jf@wrigleys.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      6785
Logged by:          Anderson Valadares
Email address:      andervalbh(at)gmail(dot)com
PostgreSQL version: 9.1.4
Operating system:   Linux CentOS 5.5
Description:        

Hello,
  we recently had a memory exhaustion in the PostgreSQL server of the
company, after a scan found a likely memory leak when using a plpgsql
function.
The problem occurred on an IBM x3400 server with 12G, CentOS 5.5 and
PostgreSQL 9.1.4. The leak occurs when a variable declared type of a table
column and when the
column or the table ceases to exist.
Follow the steps for the simulation:

create table tbl_test
(cod integer);

CREATE OR REPLACE FUNCTION citgis.fct_test()
RETURNS void AS
$body$
DECLARE
  v_cod tbl_test.cod%type;
BEGIN
  return;
END;
$body$
LANGUAGE 'plpgsql';

drop table tbl_test;


test=# select pg_backend_pid();
 pg_backend_pid
----------------
           6465

Initial memory
------------------------------------------------------------------------------------------------------------------------
PID USER      PR  NI  VIRT SWAP  RES CODE DATA  SHR S P %CPU %MEM    TIME+ 
COMMAND
6465 postgres  16   0 1183m 1.2g 4308 4684 2896 2900 S 1  0.0  0.0   0:00.00
postgres: postgres test [local] idle
------------------------------------------------------------------------------------------------------------------------


1st Execution
------------------------------------------------------------------------------------------------------------------------

\o processa.sql
\t

select E'select fct_test();'
from generate_series(1, 1000);

\o
\t

\i processa.sql

PID USER      PR  NI  VIRT SWAP  RES CODE DATA  SHR S P %CPU %MEM    TIME+ 
COMMAND
6465 postgres  15   0 1194m 1.2g  14m 4684  12m 3748 S 1  0.0  0.1   0:00.08
postgres: postgres test [local] idle
------------------------------------------------------------------------------------------------------------------------



2st Execution
------------------------------------------------------------------------------------------------------------------------
\o processa.sql
\t

select E'select fct_test();'
from generate_series(1, 1000);

\o
\t

\i processa.sql

PID USER      PR  NI  VIRT SWAP  RES CODE DATA  SHR S P %CPU %MEM    TIME+ 
COMMAND
6465 postgres  15   0 1203m 1.2g  23m 4684  21m 3748 S 1  0.0  0.2   0:00.17
postgres: postgres test [local] idle
------------------------------------------------------------------------------------------------------------------------


3st Execution
------------------------------------------------------------------------------------------------------------------------
\o processa.sql
\t

select E'select fct_test();'
from generate_series(1, 1000);

\o
\t

\i processa.sql

PID USER      PR  NI  VIRT SWAP  RES CODE DATA  SHR S P %CPU %MEM    TIME+ 
COMMAND
6465 postgres  15   0 1212m 1.2g  32m 4684  30m 3748 S 1  3.0  0.3   0:00.26
postgres: postgres test [local] idle
------------------------------------------------------------------------------------------------------------------------


4st Execution
------------------------------------------------------------------------------------------------------------------------
\o processa.sql
\t

select E'select fct_test();'
from generate_series(1, 1000);

\o
\t

\i processa.sql

PID USER      PR  NI  VIRT SWAP  RES CODE DATA  SHR S P %CPU %MEM    TIME+ 
COMMAND
6465 postgres  16   0 1221m 1.2g  41m 4684  39m 3756 S 1  0.0  0.3   0:00.36
postgres: postgres test [local] idle
------------------------------------------------------------------------------------------------------------------------



Responses

pgsql-bugs by date

Next:From: Andres FreundDate: 2012-07-30 15:06:13
Subject: Re: BUG #6785: Memory Leak in plpgsql
Previous:From: Boris FolgmannDate: 2012-07-30 09:56:35
Subject: Re: BUG #6774: FOR IN SELECT LOOP ignores ORDER BY

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group