Bash-5.3 patch 12: fix subshells inappropriately running the EXIT trap if they receive a fatal signal before resetting traps

This commit is contained in:
Chet Ramey
2026-06-03 10:21:45 -04:00
parent eb9d01914b
commit ecb2456d63
3 changed files with 7 additions and 4 deletions
+2 -2
View File
@@ -1643,13 +1643,13 @@ execute_in_subshell (COMMAND *command, int asynchronous, int pipe_in, int pipe_o
if (user_subshell)
{
subshell_environment = SUBSHELL_PAREN; /* XXX */
subshell_environment = SUBSHELL_PAREN|SUBSHELL_IGNTRAP; /* XXX */
if (asynchronous)
subshell_environment |= SUBSHELL_ASYNC;
}
else
{
subshell_environment = 0; /* XXX */
subshell_environment = SUBSHELL_IGNTRAP; /* XXX */
if (asynchronous)
subshell_environment |= SUBSHELL_ASYNC;
if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
+1 -1
View File
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
#define PATCHLEVEL 11
#define PATCHLEVEL 12
#endif /* _PATCHLEVEL_H_ */
+4 -1
View File
@@ -638,7 +638,10 @@ termsig_handler (int sig)
interrupt_execution = retain_fifos = executing_funsub = 0;
comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
run_exit_trap (); /* XXX - run exit trap possibly in signal context? */
/* Don't run the exit trap if we're supposed to be ignoring traps in a
subshell environment. */
if ((subshell_environment & SUBSHELL_IGNTRAP) == 0)
run_exit_trap (); /* XXX - run exit trap possibly in signal context? */
kill_shell (sig);
}