Re: BUG #15428: "Inception" with recursive prepared statement causes infinite loop

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: mborch@gmail.com
Cc: pgsql-bugs@lists.postgresql.org
Date: 2018-10-15T16:21:41Z
Lists: pgsql-bugs
> Using the extended query message flow, I prepare, bind and execute a query
> as a named statement.
> If I repeat this again with the query "execute <name>" – the backend crashes
> with a segmentation fault due to an infinite recursion (see excerpt
> below).

Hm, yeah.  I'm inclined to think that the right fix is a
check_stack_depth() call in standard_ProcessUtility.
That transforms the case into

$ ./test
PQexecPrepared failed: ERROR:  stack depth limit exceeded
HINT:  Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.

which seems like an adequate response, and would cover some
related scenarios as well.

			regards, tom lane


Commits

  1. Check for stack overrun in standard_ProcessUtility().