From: Paul Smith Date: Tue, 3 Sep 2019 03:03:27 +0000 (-0400) Subject: Don't reset stack size when using posix_spawn() X-Git-Tag: 4.2.91~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f3a41c60a02f6df9fc0725698ade64825907822;p=thirdparty%2Fmake.git 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. --- 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