Re: [HACKERS] Fix for segfault in plpython's exception handling

Поиск
Список
Период
Сортировка
От Rafa de la Torre
Тема Re: [HACKERS] Fix for segfault in plpython's exception handling
Дата
Msg-id CA+Fz15kv35H47Nzsq14f5yLxDMtSUJb975eDa=vFTbRj1=e8jA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [HACKERS] Fix for segfault in plpython's exception handling  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] Fix for segfault in plpython's exception handling  (Rafa de la Torre <rafael.delatorre.vega@gmail.com>)
Список pgsql-hackers
Thank you! Glad to see that the report was useful.

On Fri, Dec 9, 2016 at 9:33 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
I wrote:
> Rafa de la Torre <rtorre@carto.com> writes:
>>              exc = PyErr_NewException(exception_map[i].name, base, dict);
>> +            Py_INCREF(exc);
>>              PyModule_AddObject(mod, exception_map[i].classname, exc);

> Hm.  Seems like if this is a problem, the code for the other three
> exceptions is being a bit careless: it does do Py_INCREFs on them,
> but not soon enough to ensure no problems.  Also, I wonder why that
> code checks for a null result from PyErr_NewException but this doesn't.

> Good catch though.  A naive person would have assumed that
> PyModule_AddObject would increment the object's refcount, but
> the Python docs say "This steals a reference to value", which
> I guess must mean that the caller is required to do it.

For me (testing with Python 2.6.6 on RHEL6), this test case didn't result
in a server crash, but in the wrong exception object name being reported.
Tracing through it showed that a python GC was happening during the loop
adding all the exceptions to the spiexceptions module, so that some of the
exception objects went away and then were immediately reallocated as other
exception objects.  The explicit gc call in the test case wasn't
necessary, because the problem happened before that.  Fun fun.

I've pushed a patch that deals with all these problems.  Thanks for
the report!

                        regards, tom lane



--
Rafa de la Torre

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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: [HACKERS] Hang in pldebugger after git commit : 98a64d0
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: [HACKERS] pgcrypto compilation error due to stack-allocatedEVP_CIPHER_CTX