BUG #5131: The pgsql will lost
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();
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
"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