fixup set rlimit stack failed condition

refs #6119
refs #6215
This commit is contained in:
lihan 2018-02-27 12:56:36 +08:00 committed by Michael Friedrich
parent 3a12ba75c7
commit bf959371c4
1 changed files with 24 additions and 23 deletions

View File

@ -256,32 +256,33 @@ void Application::SetResourceLimits(void)
else
rl.rlim_cur = rl.rlim_max;
if (setrlimit(RLIMIT_STACK, &rl) < 0)
if (setrlimit(RLIMIT_STACK, &rl) < 0) {
Log(LogNotice, "Application", "Could not adjust resource limit for stack size (RLIMIT_STACK)");
else if (set_stack_rlimit) {
char **new_argv = static_cast<char **>(malloc(sizeof(char *) * (argc + 2)));
if (set_stack_rlimit) {
char **new_argv = static_cast<char **>(malloc(sizeof(char *) * (argc + 2)));
if (!new_argv) {
perror("malloc");
Exit(EXIT_FAILURE);
if (!new_argv) {
perror("malloc");
Exit(EXIT_FAILURE);
}
new_argv[0] = argv[0];
new_argv[1] = strdup("--no-stack-rlimit");
if (!new_argv[1]) {
perror("strdup");
exit(1);
}
for (int i = 1; i < argc; i++)
new_argv[i + 1] = argv[i];
new_argv[argc + 1] = NULL;
(void) execvp(new_argv[0], new_argv);
perror("execvp");
_exit(EXIT_FAILURE);
}
new_argv[0] = argv[0];
new_argv[1] = strdup("--no-stack-rlimit");
if (!new_argv[1]) {
perror("strdup");
exit(1);
}
for (int i = 1; i < argc; i++)
new_argv[i + 1] = argv[i];
new_argv[argc + 1] = NULL;
(void) execvp(new_argv[0], new_argv);
perror("execvp");
_exit(EXIT_FAILURE);
}
# else /* RLIMIT_STACK */
Log(LogNotice, "Application", "System does not support adjusting the resource limit for stack size (RLIMIT_STACK)");