BUG #5066: plperl issues with perl_destruct() and END blocks

Поиск
Список
Период
Сортировка
От Tim Bunce
Тема BUG #5066: plperl issues with perl_destruct() and END blocks
Дата
Msg-id 200909191921.n8JJLfGN052323@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #5066: plperl issues with perl_destruct() and END blocks  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      5066
Logged by:          Tim Bunce
Email address:      Tim.Bunce@pobox.com
PostgreSQL version: 8.4.1
Operating system:   darwin
Description:        plperl issues with perl_destruct() and END blocks
Details:

The plperl implementation doesn't call perl_destruct() during server
shutdown.

So any resources held by references, in %_SHARED for example, are not
properly freed. The perl interpreter never gets a chance to cleanup, it's
simply discarded.

Related to the above, plperl should also set PL_exit_flags |=
PERL_EXIT_DESTRUCT_END. Currently any END blocks defined during
initialization get executed at initialization (just before perl_run()
returns).  Any END blocks defined later never get run.

Setting PL_exit_flags |= PERL_EXIT_DESTRUCT_END in plperl_init_interp() and
calling perl_destruct() will fix the issue.

The timing of the perl_destruct() call (i.e., early or late in the shutdown
sequence) doesn't matter much. You might want to make the spi_* functions
return an error if there's a shutdown in progress.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Jesse Morris"
Дата:
Сообщение: BUG #5065: pg_ctl start fails as administrator, with "could not locate matching postgres executable"
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #5066: plperl issues with perl_destruct() and END blocks