Thread: elog(PANIC) should abort()?

elog(PANIC) should abort()?

From
Tom Lane
Date:
I am thinking it would be useful for debugging if elog(PANIC) were to
exit by calling abort() so that a core dump would be produced.

Going out via proc_exit(), as it now does, seems like a bad idea in any
case, since that will try to do a bunch of cleanup activity that's
probably inappropriate after a panic.

Comments?
        regards, tom lane


Re: elog(PANIC) should abort()?

From
Bruce Momjian
Date:
Tom Lane wrote:
> I am thinking it would be useful for debugging if elog(PANIC) were to
> exit by calling abort() so that a core dump would be produced.
> 
> Going out via proc_exit(), as it now does, seems like a bad idea in any
> case, since that will try to do a bunch of cleanup activity that's
> probably inappropriate after a panic.

Sure, dump core.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: elog(PANIC) should abort()?

From
Peter Eisentraut
Date:
Tom Lane writes:

> I am thinking it would be useful for debugging if elog(PANIC) were to
> exit by calling abort() so that a core dump would be produced.
>
> Going out via proc_exit(), as it now does, seems like a bad idea in any
> case, since that will try to do a bunch of cleanup activity that's
> probably inappropriate after a panic.

But is this appropriate?

PANIC:  The database cluster was initialized with CATALOG_VERSION_NO 200210181,       but the backend was compiled with
CATALOG_VERSION_NO200211021.       It looks like you need to initdb.
 
Aborted (core dumped)

-- 
Peter Eisentraut   peter_e@gmx.net



Re: elog(PANIC) should abort()?

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> Tom Lane writes:
>> I am thinking it would be useful for debugging if elog(PANIC) were to
>> exit by calling abort() so that a core dump would be produced.

> But is this appropriate?

> PANIC:  The database cluster was initialized with CATALOG_VERSION_NO 200210181,
>         but the backend was compiled with CATALOG_VERSION_NO 200211021.
>         It looks like you need to initdb.
> Aborted (core dumped)

Hm.  We could possibly reduce those particular messages to FATAL.

OTOH, it's not unreasonable that seeing those messages *in the field*
might be an appropriate situation for a core dump.  I think as
developers we sometimes have a skewed sense of what's common ;-)

Ever since Bruce introduced the additional elog levels, I have felt it
would be a good idea to go through all the elog calls and re-evaluate
what levels they should have.  It's a lot o' work though...
        regards, tom lane