diff options
Diffstat (limited to 'src/backend/utils/error/elog.c')
-rw-r--r-- | src/backend/utils/error/elog.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 247cf1c724a..b8da26779b6 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.50 1999/10/25 03:07:50 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.51 1999/11/16 06:13:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -378,12 +378,13 @@ elog(int lev, const char *fmt, ...) } InError = true; ProcReleaseSpins(NULL); /* get rid of spinlocks we hold */ - if (lev == FATAL) + if (! Warn_restart_ready) { - if (IsInitProcessingMode()) - ExitPostgres(0); - ExitAfterAbort = true; + /* error reported before there is a main loop to return to */ + elog(REALLYFATAL, "elog: error in postmaster or backend startup, giving up!"); } + if (lev == FATAL) + ExitAfterAbort = true; /* exit to main loop */ siglongjmp(Warn_restart, 1); } @@ -393,6 +394,9 @@ elog(int lev, const char *fmt, ...) /* * Serious crash time. Postmaster will observe nonzero * process exit status and kill the other backends too. + * + * XXX: what if we are *in* the postmaster? proc_exit() + * won't kill our children... */ fflush(stdout); fflush(stderr); |