BUG #6785: Memory Leak in plpgsql - Mailing list pgsql-bugs
| From | andervalbh@gmail.com |
|---|---|
| Subject | BUG #6785: Memory Leak in plpgsql |
| Date | |
| Msg-id | E1Svpov-0005ND-Jf@wrigleys.postgresql.org Whole thread Raw |
| Responses |
Re: BUG #6785: Memory Leak in plpgsql
|
| List | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 6785
Logged by: Anderson Valadares
Email address: andervalbh@gmail.com
PostgreSQL version: 9.1.4
Operating system: Linux CentOS 5.5
Description:=20=20=20=20=20=20=20=20
Hello,
=C2=A0 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=3D# 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+=
=20
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+=
=20
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+=
=20
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+=
=20
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+=
=20
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
---------------------------------------------------------------------------=
---------------------------------------------
pgsql-bugs by date: