pgsql: Make plperl safe against functions that are redefined while runn
От | Tom Lane |
---|---|
Тема | pgsql: Make plperl safe against functions that are redefined while runn |
Дата | |
Msg-id | E1TArwa-0008Sc-1I@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Make plperl safe against functions that are redefined while running. validate_plperl_function() supposed that it could free an old plperl_proc_desc struct immediately upon detecting that it was stale. However, if a plperl function is called recursively, this could result in deleting the struct out from under an outer invocation, leading to misbehavior or crashes. Add a simple reference-count mechanism to ensure that such structs are freed only when the last reference goes away. Per investigation of bug #7516 from Marko Tiikkaja. I am not certain that this error explains his report, because he says he didn't have any recursive calls --- but it's hard to see how else it could have crashed right there. In any case, this definitely fixes some problems in the area. Back-patch to all active branches. Branch ------ REL8_4_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/dc447e1515941c8edc51fabcd318f7b1311dd1e8 Modified Files -------------- src/pl/plperl/expected/plperl.out | 18 +++++++ src/pl/plperl/plperl.c | 95 +++++++++++++++++++++++++----------- src/pl/plperl/sql/plperl.sql | 10 ++++ 3 files changed, 94 insertions(+), 29 deletions(-)
В списке pgsql-committers по дате отправления: