> On 4 September 2008, Chet Ramey <[EMAIL PROTECTED]> wrote: > > > Description: > > > Regradless of the huponexit setting ('shopt -s huponexit' doesn't > > > help) bash does not send SIGHUP to its children when it receives > > > one > > > itself. Previous version of bash 3.1.17 was behaving properly > > > even with huponexit set to off > > > > > > Repeat-By: > > > launch rxvt, launch mc then close the rxvt window -> > > > mc is still running with CPU to 100% (this is because > > > mc tries to read from stdin while receiving EOF) > > > Closing rxvt sends SIGHUP to bash but bash doesn't send > > > SIGHUP to its children
I can't reproduce what you're seeing. Here's what I get: bash strace (partial -- the waitpid is it waiting for mc, pid 28775) waitpid(-1, 0xbf96a378, WSTOPPED|WCONTINUED) = ? ERESTARTSYS (To be restarted) --- SIGHUP (Hangup) @ 0 (0) --- --- SIGCONT (Continued) @ 0 (0) --- sigreturn() = ? (mask now [CHLD]) stat64("/home/chet/.bash_history", {st_mode=S_IFREG|0600, st_size=2315, ...}) = 0 open("/home/chet/.bash_history", O_WRONLY|O_APPEND|O_LARGEFILE) = -1 EACCES (Permission denied) open("/home/chet/.bash_history", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied) kill(-28775, SIGHUP) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [CHLD], 8) = 0 ioctl(255, TIOCSPGRP, [28757]) = -1 ENOTTY (Inappropriate ioctl for device) rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 setpgid(0, 28757) = -1 EPERM (Operation not permitted) rt_sigaction(SIGHUP, {SIG_DFL}, {0x8092110, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], 0}, 8) = 0 kill(28757, SIGHUP) = 0 --- SIGHUP (Hangup) @ 0 (0) --- Process 28757 detached mc trace: Process 28775 attached - interrupt to quit select(5, [3 4], NULL, NULL, NULL) = 1 (in [3]) rt_sigaction(SIGINT, {SIG_IGN}, NULL, 8) = 0 select(5, [3 4], NULL, NULL, NULL) = 1 (in [3]) --- SIGHUP (Hangup) @ 0 (0) --- Process 28775 detached I am wondering about a few things from your trace. First, why is bash reading from fd 3? That implies a non-interactive shell, possibly without job control. The `huponexit' option only works with interactive login shells. The SIGHUP handler only resends SIGHUP to jobs when the shell is interactive -- it's often not the right thing to send them to all children when the shell is not interactive. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer Chet Ramey, ITS, CWRU [EMAIL PROTECTED] http://tiswww.tis.case.edu/~chet/