BUG #15435: Infinite-recursive SQL procedure can crash a database server

Started by PG Bug reporting formover 7 years ago3 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 15435
Logged by: rlbxku1r
Email address: emuser20140816@gmail.com
PostgreSQL version: 11rc1
Operating system: Windows
Description:

CREATE PROCEDURE proc1() LANGUAGE sql AS 'CALL proc1();';
CALL proc1(); -- crash

I've also tried the minimum max_stack_depth, but it has no effect:
SET max_stack_depth TO '100kB';
CALL proc1();

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #15435: Infinite-recursive SQL procedure can crash a database server

=?utf-8?q?PG_Bug_reporting_form?= <noreply@postgresql.org> writes:

CREATE PROCEDURE proc1() LANGUAGE sql AS 'CALL proc1();';
CALL proc1(); -- crash

Works for me in 11.0, no doubt as a result of this last-minute fix:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=db9034bf7653fa527e2531e1a713dbbd37066a6b

=# CALL proc1();
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.
CONTEXT: SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
... lots more ...

regards, tom lane

#3fn ln
emuser20140816@gmail.com
In reply to: Tom Lane (#2)
Re: BUG #15435: Infinite-recursive SQL procedure can crash a database server

I had missed it. Thanks.

2018年10月17日(水) 23:12 Tom Lane <tgl@sss.pgh.pa.us>:

Show quoted text

=?utf-8?q?PG_Bug_reporting_form?= <noreply@postgresql.org> writes:

CREATE PROCEDURE proc1() LANGUAGE sql AS 'CALL proc1();';
CALL proc1(); -- crash

Works for me in 11.0, no doubt as a result of this last-minute fix:

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=db9034bf7653fa527e2531e1a713dbbd37066a6b

=# CALL proc1();
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.
CONTEXT: SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
SQL function "proc1" statement 1
... lots more ...

regards, tom lane