From 4f3a41c60a02f6df9fc0725698ade64825907822 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 2 Sep 2019 23:03:27 -0400 Subject: [PATCH] Don't reset stack size when using posix_spawn() There's no way to run setrlimit() from posix_spawn() so we can't reset the stack limit in children; thus, don't change it in the parent. * src/makeint.h (SET_STACK_SIZE): Don't set this when HAVE_POSIX_SPAWN. * src/job.c (child_execute_job): Remove useless comment. --- src/job.c | 4 ---- src/makeint.h | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/job.c b/src/job.c index f4f2113f..34a6e666 100644 --- a/src/job.c +++ b/src/job.c @@ -2308,10 +2308,6 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp) flags |= POSIX_SPAWN_USEVFORK; #endif -#ifdef SET_STACK_SIZE - /* No support for resetting the stack limit with posix_spawn(). */ -#endif - /* For any redirected FD, dup2() it to the standard FD. They are all marked close-on-exec already. */ if (fdin >= 0 && fdin != FD_STDIN) diff --git a/src/makeint.h b/src/makeint.h index d13c3135..6c9492c4 100644 --- a/src/makeint.h +++ b/src/makeint.h @@ -447,7 +447,8 @@ extern int unixy_shell; #define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s) #define END_OF_TOKEN(s) while (! STOP_SET (*(s), MAP_SPACE|MAP_NUL)) ++(s) -#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) +/* We can't run setrlimit when using posix_spawn. */ +#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && !defined(USE_POSIX_SPAWN) # define SET_STACK_SIZE #endif #ifdef SET_STACK_SIZE