Re: [HACKERS] ERROR: infinite recursion in proc_exit

Bruce Momjian <maillist@candle.pha.pa.us>

From: Bruce Momjian <maillist@candle.pha.pa.us>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Massimo Dal Zotto <dz@cs.unitn.it>, PostgreSQL Hackers <hackers@postgreSQL.org>
Date: 1999-11-06T20:48:05Z
Lists: pgsql-hackers
> Bruce Momjian <maillist@candle.pha.pa.us> writes:
> >     /* ----------------
> >      *  if proc_exit_inprocess > 1, then it means that we
> >      *  are being invoked from within an on_exit() handler
> >      *  and so we return immediately to avoid recursion.  
> >      * ----------------
> >      */
> >     if (proc_exit_inprogress > 1)  
> >         return;
> 
> No, no, no, noooo!!!
> 
> proc_exit MUST NOT RETURN.  EVER, UNDER ANY CIRCUMSTANCES.
> 
> If it does, that means that elog(STOP) can return under some
> circumstances.  The callers of elog() are not expecting that,
> and they are likely to screw things up even worse if elog returns
> control unexpectedly.
> 
> AFAICS, this set of problems cannot be fixed by localized patching in
> proc_exit.  We have to globally change the way in which errors are
> processed after proc_exit has begun execution.
> 

Oh, well.  I tried.  Code is better than it used to be at least.

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026