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