Re: [HACKERS] ERROR: infinite recursion in proc_exit - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] ERROR: infinite recursion in proc_exit
Date
Msg-id 199911061657.LAA01966@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] ERROR: infinite recursion in proc_exit  (Massimo Dal Zotto <dz@cs.unitn.it>)
Responses Re: [HACKERS] ERROR: infinite recursion in proc_exit  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> > 
> > Hmm.  If that trace is from 6.5 code, then postgres.c should certainly
> > be calling proc_exit after the recv() fails.  I wonder if proc_exit is
> > returning because proc_exit_inprogress is nonzero?  proc_exit's use of
> > elog(ERROR) does look mighty bogus to me --- that path could possibly
> > cause a recursion just like this, but how did the code get into it to
> > begin with?
> 
> The proc_exit_inprogress stuff was added by me after I found some backends
> doing exactly that sort of infinite recursion after a socket recv error.
> It doesn't correct the original error but at least il will exit the backend
> after 10 iterations. The elog(ERROR) might be bogus in this context, but how
> can you otherwise notify the error? Maybe a better solution could be this:
> 
>     if (proc_exit_inprogress++ == 9)
>         elog(ERROR, "infinite recursion in proc_exit");
>     if (proc_exit_inprogress >= 9)
>         goto exit;


Fix applied:
   /*    * If proc_exit is called too many times something bad is happening, so    * exit immediately.  This is crafted
intwo if's for a reason.    */   if (proc_exit_inprogress == 9)       elog(ERROR, "infinite recursion in proc_exit");
if(proc_exit_inprogress >= 9)       goto exit;
 


--  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,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: New version of psql
Next
From: Jeroen van Vianen
Date:
Subject: Problem with CVS