mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Make get_stack_depth_rlimit() handle RLIM_INFINITY more sanely.
Rather than considering this result as meaning "unknown", report LONG_MAX. This won't change what superusers can set max_stack_depth to, but it will cause InitializeGUCOptions() to set the built-in default to 2MB not 100kB. The latter seems like a fairly unreasonable interpretation of "infinity". Per my investigation of odd buildfarm results as well as an old complaint from Heikki. Since this should persuade all the buildfarm animals to use a reasonable stack depth setting during "make check", revert previous patch that dumbed down a recursive regression test to only 5 levels.
This commit is contained in:
@ -19,10 +19,11 @@
|
||||
|
||||
#include "postgres.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/socket.h>
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
#include <sys/select.h>
|
||||
@ -4107,7 +4108,7 @@ PostgresMain(int argc, char *argv[], const char *username)
|
||||
/*
|
||||
* Obtain platform stack depth limit (in bytes)
|
||||
*
|
||||
* Return -1 if unlimited or not known
|
||||
* Return -1 if unknown
|
||||
*/
|
||||
long
|
||||
get_stack_depth_rlimit(void)
|
||||
@ -4123,7 +4124,10 @@ get_stack_depth_rlimit(void)
|
||||
if (getrlimit(RLIMIT_STACK, &rlim) < 0)
|
||||
val = -1;
|
||||
else if (rlim.rlim_cur == RLIM_INFINITY)
|
||||
val = -1;
|
||||
val = LONG_MAX;
|
||||
/* rlim_cur is probably of an unsigned type, so check for overflow */
|
||||
else if (rlim.rlim_cur >= LONG_MAX)
|
||||
val = LONG_MAX;
|
||||
else
|
||||
val = rlim.rlim_cur;
|
||||
}
|
||||
|
Reference in New Issue
Block a user