elog(PANIC) should abort()?

Started by Tom Laneabout 23 years ago4 messages
#1Tom Lane
tgl@sss.pgh.pa.us

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

#2Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Tom Lane (#1)
Re: elog(PANIC) should abort()?

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, Pennsylvania 19073
#3Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#1)
Re: elog(PANIC) should abort()?

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_NO 200211021.
It looks like you need to initdb.
Aborted (core dumped)

--
Peter Eisentraut peter_e@gmx.net

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#3)
Re: elog(PANIC) should abort()?

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