Re: Ungraceful handling of fatal flex errors
От | Tom Lane |
---|---|
Тема | Re: Ungraceful handling of fatal flex errors |
Дата | |
Msg-id | 21862.980612139@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Ungraceful handling of fatal flex errors (Peter Eisentraut <peter_e@gmx.net>) |
Ответы |
Re: Ungraceful handling of fatal flex errors
|
Список | pgsql-hackers |
Peter Eisentraut <peter_e@gmx.net> writes: > A fatal scanner error (likely a memory exhaustion problem) causes a > straight exit() without clean up, which causes a system-wide restart. > This should fix it: > *** scan.l 2001/01/24 19:43:03 1.85 > --- scan.l 2001/01/27 14:14:29 > *************** > *** 55,60 **** > --- 55,62 ---- > /* No reason to constrain amount of data slurped per myinput() call. */ > #define YY_READ_BUF_SIZE 16777216 > + #define YY_FATAL_ERROR(msg) elog(FATAL, "%s", (msg)) > + > #else /* !FLEX_SCANNER */ > #undef input > But you will now get an unavoidable > scan.c:2145: warning: `yy_fatal_error' defined but not used I have a sneakier idea to avoid the warning. The yy_fatal_error routine is defined as (void) fprintf( stderr, "%s\n", msg );exit( YY_EXIT_FAILURE ); and this is the only use of fprintf in the scan.c file. How about leaving yy_fatal_error as the error subroutine, and insert #define fprintf(file,fmt,msg) elog(FATAL, "%s", (msg)) regards, tom lane
В списке pgsql-hackers по дате отправления: