Re: CC_send_query_append crash

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема Re: CC_send_query_append crash
Дата
Msg-id CAB7nPqTCD9jtjY3F2i-HXR5PZu8GyUQvesUaJLMZOYsSoQ0z=A@mail.gmail.com
обсуждение исходный текст
Ответ на CC_send_query_append crash  (Malcolm MacLeod <malcolm.macleod@tshwanedje.com>)
Ответы Re: CC_send_query_append crash
Список pgsql-odbc
On Wed, Apr 30, 2014 at 1:44 AM, Malcolm MacLeod
<malcolm.macleod@tshwanedje.com> wrote:
> The crash seems to occur because CC_send_query_append crash takes a
> local copy of the pointer 'self->sock' at the top of the function,
> 'self' is then passed around to various functions (some of which have
> the side effect of setting self->sock to NULL (and deleting) if there is
> a lost connection) and then the local copy of the pointer (which is now
> dangling) is dereferenced lower down in the function.
> Essentially if there is a disconnect while CC_send_query_append is
> running there is a risk of crash.
Looking at the code, I am seeing that the problem is related to
CC_on_abort where conn->sock is set to NULL when the connection is
considered as dead. And I am indeed seeing two code paths (when
sending the 'C' message there is an ABORT check and in cleanup
section) that could use this NULL socket afterwards. Your patch is
perhaps a bit too much. So I am proposing the attached patch instead.
Let me know if this fixes your issue as well.
Regards,
--
Michael

Вложения

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

Предыдущее
От: Malcolm MacLeod
Дата:
Сообщение: CC_send_query_append crash
Следующее
От: Pierre Couderc
Дата:
Сообщение: Re: Transcoding problem with wine and unixodbc