BASH PATCH REPORT ================= Bash-Release: 4.0 Patch-ID: bash40-015 Bug-Reported-by: Lubomir Rintel Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html Bug-Description: Deferring handling of signals which should cause the shell to terminate until it is "safe" to run the handler functions does not work for some terminating signals. Patch: *** ../bash-4.0-patched/sig.c 2009-01-04 14:32:41.000000000 -0500 --- sig.c 2009-03-22 14:47:56.000000000 -0400 *************** *** 449,452 **** --- 449,494 ---- int sig; { + /* If we get called twice with the same signal before handling it, + terminate right away. */ + if ( + #ifdef SIGHUP + sig != SIGHUP && + #endif + #ifdef SIGINT + sig != SIGINT && + #endif + #ifdef SIGDANGER + sig != SIGDANGER && + #endif + #ifdef SIGPIPE + sig != SIGPIPE && + #endif + #ifdef SIGALRM + sig != SIGALRM && + #endif + #ifdef SIGTERM + sig != SIGTERM && + #endif + #ifdef SIGXCPU + sig != SIGXCPU && + #endif + #ifdef SIGXFSZ + sig != SIGXFSZ && + #endif + #ifdef SIGVTALRM + sig != SIGVTALRM && + #endif + #ifdef SIGLOST + sig != SIGLOST && + #endif + #ifdef SIGUSR1 + sig != SIGUSR1 && + #endif + #ifdef SIGUSR2 + sig != SIGUSR2 && + #endif + sig == terminating_signal) + terminate_immediately = 1; + terminating_signal = sig; *** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500 --- patchlevel.h 2009-02-22 16:11:31.000000000 -0500 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 14 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 15 #endif /* _PATCHLEVEL_H_ */