BUG #5131: The pgsql will lost

Started by ufo008ahwover 16 years ago3 messagesbugs
Jump to latest
#1ufo008ahw
ufo008ahw@163.com

The following bug has been logged online:

Bug reference: 5131
Logged by: aihongwei
Email address: ufo008ahw@163.com
PostgreSQL version: 8.0.0
Operating system: linux x86_64
Description: The pgsql will lost
Details:

In x86_64 platform,
I input command "ulimit -s 2048" to limit the stack size.Then I startup the
server,and when i do some recursion operation, the pgsql will lost in some
time.
It seems that The stack_max_depth does work.

example:
CREATE FUNCTION infinite_recurse() returns int as
'select infinite_recurse()' language sql;
select infinite_recurse();

#2Robert Haas
robertmhaas@gmail.com
In reply to: ufo008ahw (#1)
Re: BUG #5131: The pgsql will lost

On Wed, Oct 21, 2009 at 11:23 PM, aihongwei <ufo008ahw@163.com> wrote:

The following bug has been logged online:

Bug reference:      5131
Logged by:          aihongwei
Email address:      ufo008ahw@163.com
PostgreSQL version: 8.0.0
Operating system:   linux x86_64
Description:        The pgsql will lost
Details:

In x86_64 platform,
I input command "ulimit -s 2048" to limit the stack size.Then I startup the
server,and when i do some recursion operation, the pgsql will lost in some
time.
It seems that The stack_max_depth does work.

example:
CREATE FUNCTION infinite_recurse() returns int as
'select infinite_recurse()' language sql;
select infinite_recurse();

*scratches head*

Well, you haven't really told us what happens when you do this. Does
it hang up forever? How long did you wait? Does it crash?

The default value for max_stack_depth (NOT stack_max_depth) seems to
be 2MB, so setting the system limit to the same value seems like a bad
idea.

http://www.postgresql.org/docs/current/interactive/runtime-config-resource.html#GUC-MAX-STACK-DEPTH

...Robert

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: ufo008ahw (#1)
Re: BUG #5131: The pgsql will lost

"aihongwei" <ufo008ahw@163.com> writes:

In x86_64 platform,
I input command "ulimit -s 2048" to limit the stack size.Then I startup the
server,and when i do some recursion operation, the pgsql will lost in some
time.
It seems that The stack_max_depth does work.

If you read the description of that setting, you will notice that it
recommends leaving a safety margin of at least one megabyte between the
kernel ulimit setting and the max_stack_depth value. You have left a
safety margin of zero. A crash is unsurprising.

More recent versions of Postgres are able to check whether
max_stack_depth has a safe value relative to ulimit -s, but 8.0 just
believes whatever you tell it.

BTW, are you *really* using 8.0.0? If so please update. The current
bugfix release in that series is 8.0.22.

regards, tom lane