Ondrej Oprala f6d304
			     BASH PATCH REPORT
Ondrej Oprala f6d304
			     =================
Ondrej Oprala f6d304
Ondrej Oprala f6d304
Bash-Release:	4.3
Ondrej Oprala f6d304
Patch-ID:	bash43-032
Ondrej Oprala f6d304
Ondrej Oprala f6d304
Bug-Reported-by:	crispusfairbairn@gmail.com
Ondrej Oprala f6d304
Bug-Reference-ID:	<b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
Ondrej Oprala f6d304
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
Ondrej Oprala f6d304
Ondrej Oprala f6d304
Bug-Description:
Ondrej Oprala f6d304
Ondrej Oprala f6d304
When bash is running in Posix mode, it allows signals -- including SIGCHLD --
Ondrej Oprala f6d304
to interrupt the `wait' builtin, as Posix requires.  However, the interrupt
Ondrej Oprala f6d304
causes bash to not run a SIGCHLD trap for all exited children.  This patch
Ondrej Oprala f6d304
fixes the issue and restores the documented behavior in Posix mode.
Ondrej Oprala f6d304
Ondrej Oprala f6d304
Patch (apply with `patch -p0'):
Ondrej Oprala f6d304
Ondrej Oprala f6d304
*** ../bash-4.3-patched/jobs.c	2014-05-14 09:20:15.000000000 -0400
Ondrej Oprala f6d304
--- jobs.c	2014-09-09 11:50:38.000000000 -0400
Ondrej Oprala f6d304
***************
Ondrej Oprala f6d304
*** 3340,3344 ****
Ondrej Oprala f6d304
  	{
Ondrej Oprala f6d304
  	  interrupt_immediately = 0;
Ondrej Oprala f6d304
! 	  trap_handler (SIGCHLD);	/* set pending_traps[SIGCHLD] */
Ondrej Oprala f6d304
  	  wait_signal_received = SIGCHLD;
Ondrej Oprala f6d304
  	  /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
Ondrej Oprala f6d304
--- 3346,3352 ----
Ondrej Oprala f6d304
  	{
Ondrej Oprala f6d304
  	  interrupt_immediately = 0;
Ondrej Oprala f6d304
! 	  /* This was trap_handler (SIGCHLD) but that can lose traps if
Ondrej Oprala f6d304
! 	     children_exited > 1 */
Ondrej Oprala f6d304
! 	  queue_sigchld_trap (children_exited);
Ondrej Oprala f6d304
  	  wait_signal_received = SIGCHLD;
Ondrej Oprala f6d304
  	  /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
Ondrej Oprala f6d304
*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
Ondrej Oprala f6d304
--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
Ondrej Oprala f6d304
***************
Ondrej Oprala f6d304
*** 26,30 ****
Ondrej Oprala f6d304
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala f6d304
  
Ondrej Oprala f6d304
! #define PATCHLEVEL 31
Ondrej Oprala f6d304
  
Ondrej Oprala f6d304
  #endif /* _PATCHLEVEL_H_ */
Ondrej Oprala f6d304
--- 26,30 ----
Ondrej Oprala f6d304
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala f6d304
  
Ondrej Oprala f6d304
! #define PATCHLEVEL 32
Ondrej Oprala f6d304
  
Ondrej Oprala f6d304
  #endif /* _PATCHLEVEL_H_ */