On 2/8/11 7:11 PM, Ingo Molnar wrote: > > * Chet Ramey <chet.ra...@case.edu> wrote: > >> On 2/8/11 4:17 PM, Oleg Nesterov wrote: >> >>> Once again. If bash gets ^C and at the same time the current foreground >>> child exits normally (either because this jctl signal races with exit() >>> or because the child hooks SIGINT and exits after that) SIGINT is lost. >>> >>> set_job_status_and_cleanup() insists that WTERMSIG(child->status) should >>> be SIGINT, iow the child should be killed by the same signal. Otherwise >>> it is not going to kill itself, and the next wait_for() clears >>> wait_sigint_received. >>> >>> This all looks intentional, but this means ^C can never work reliably. >> >> It depends on what you mean by `reliably'. Consider a script that runs >> emacs, then does other processing when emacs completes. Emacs uses SIGINT >> internally to interrupt editing commands, but handles it and does not exit >> as a result. Since emacs is run from a script, and job control is not >> enabled, the shell receives the SIGINT also, because it is in the >> terminal's foreground process group. Should the shell abort the script >> when emacs exits? > > Could you try the reproducer please? > > Once you run it, try to stop it via Ctrl-C, and try to do this a couple of > times. > > Do you consider it normal that it often takes 2-3 Ctrl-C attempts to > interrupt that > script, that it is not possible to stop the script reliably with a single > Ctrl-C? > > This issue occurs all the time on different hardware and on different > distributions, > during make jobs and other simpler scripts, etc. - i just simplified it down > to a > simple testcase. > > Oleg also found another simple testcase i think - and Thomas (Cc:-ed) > reported > similar Ctrl-C problems with Bash as well.
I tried to reproduce it and wasn't able to. I use Mac OS X. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/