Re: fatal flex error in guc-file.l kills the postmaster

Поиск
Список
Период
Сортировка
От Noah Misch
Тема Re: fatal flex error in guc-file.l kills the postmaster
Дата
Msg-id 20111218165308.GA6393@tornado.leadboat.com
обсуждение исходный текст
Ответ на Re: fatal flex error in guc-file.l kills the postmaster  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: fatal flex error in guc-file.l kills the postmaster  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-bugs
On Sat, Dec 17, 2011 at 11:04:43PM -0500, Tom Lane wrote:
> Noah Misch <noah@leadboat.com> writes:
> > Setting aside whether we should offer a better diagnostic when a user points
> > "include" at a directory, the yy_fatal_error hack that made sense for scan.l
> > doesn't cut it for guc-file.l.  Like other guc-file.l errors, we need to
> > choose the elevel based on which process is running the code.  ERROR is never
> > the right choice.  We should instead stash the message, longjmp out of the
> > flex parser, and proceed to handle the error mostly like a regular syntax
> > error.  See attached small patch.
>
> Well, if you're going to criticize the original method as being hackish,
> you really need to offer a cleaner substitute than this one ;-).  In
> particular I'm not happy with adding a sigsetjmp() cycle for every
> single token parsed.

On the contrary, I want to make it even more of a hack to get better behavior!

Here's a version that calls sigsetjmp() once per file.  While postgresql.conf
scanning hardly seems like the place to be shaving cycles, this does catch
fatal errors in functions other than yylex(), notably yy_create_buffer().

> > On a related note, the out-of-memory handling during config file reload is
> > inconsistent.  guc-file.l uses palloc/pstrdup in various places.  An OOM at
> > those sites during a reload would kill the postmaster.
>
> If you've got OOM in the postmaster, you're dead anyway.  I feel no
> compulsion to worry about this.

Works for me.

Thanks,
nm

Вложения

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

Предыдущее
От: k_denisov@inbox.ru
Дата:
Сообщение: BUG #6344: Trouble with plperl
Следующее
От: Michael Meskes
Дата:
Сообщение: Re: BUG #6309: ECPG pre-processor issue