Re: Out of memory error causes Abort, Abort tries to allocate memory

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Out of memory error causes Abort, Abort tries to allocate memory
Дата
Msg-id 20061025192049.GA9340@alvh.no-ip.org
обсуждение исходный текст
Ответ на Out of memory error causes Abort, Abort tries to allocate memory  (Jeff Davis <pgsql@j-davis.com>)
Ответы Re: Out of memory error causes Abort, Abort tries to  (Jeff Davis <pgsql@j-davis.com>)
Re: Out of memory error causes Abort, Abort tries to allocate memory  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Jeff Davis wrote:
> I found the root cause of the bug I reported at:
>
> http://archives.postgresql.org/pgsql-bugs/2006-10/msg00211.php
>
> What happens is this:
> * Out of memory condition causes an ERROR
> * ERROR triggers an AbortTransaction()
> * AbortTransaction() calls RecordTransactionAbort()
> * RecordTransactionAbort calls smgrGetPendingDeletes()
> * smgrGetPendingDeletes() calls palloc()
> * palloc() fails, resulting in ERROR, causing infinite recursion
> * elog.c detects infinite recursion, and elevates it to PANIC
>
> I'm not sure how easy this is to fix, but I asked on IRC and got some
> agreement that this is a bug.

Hmm, maybe we could have AbortTransaction switch to ErrorContext, which
has some preallocated space, before calling RecordTransactionAbort (or
maybe have RecordTransactionAbort itself do it).

Problem is, what happens if ErrorContext is filled up by doing this?  At
that point we will be severely fscked up, and you probably won't get the
PANIC either.  (Maybe it doesn't happen in this particular case, but
seems a real risk.)

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

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

Предыдущее
От: Jeff Davis
Дата:
Сообщение: Out of memory error causes Abort, Abort tries to allocate memory
Следующее
От: Jeff Davis
Дата:
Сообщение: Re: Out of memory error causes Abort, Abort tries to