123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- The latest diff (www.freebsd.org/~cracauer/) passes all tests for
- SIGINT. SIGQUIT is a different matter, though.
- OUTDATED INFORMATION FOLLOWS, don't use
- %%
- Neue bde-version:
- test09 (shell-wait is not interruptable by SIGINT)
- %%
- CRA = my diffs.
- BDE = Bruce diffs.
- BDE version 19980212:
- Test 2: It should send SIGQUIT to cat, it doesn't.
- Test 9: can't break wait()
- %% older notes:
- test2:
- trap '' 2
- while : ; do cat ; echo -n $? ; done
- test6:
- trap '' 3
- while : ; do cat ; echo -n $? ; done
- The trapped signal should be ignored. If SIGINT is ignored (test 2),
- SIGQUIT exits `cat`, but not the shell (means the loop will continue
- and `cat` will be called again).
- If SIGQUIT is ignored, SIGINT both exit the whole script.
- I'm not sure this asymmetric behaviour is intended, but currently CRA
- and BDE versions has is.
- I think SIGTERM should exit the script in all cases immedeatly. CRA
- version does this, BDE version ignores SIGTERM.
- bash1 falls over completely on these tests.
- bash2 works like CRA version.
- Other tests:
- ------------
- BDE version fails on 5, the shell terminated while the forground child
- is running (like the unpatched FreeBSD sh did).
- BDE version handles SIGQUIT seperately from SIGINT in test 1, and 3,
- but not in test 4 and 5.
- bash2 fails on 5, it gets a SIGQUIT that was sent to a
- SIGQUIT-catching process after that process exits. Reliably, it
- doesn't matter how much time was passed between SIGQUIT to process and
- exit or process.
- As Bruce noted, bash version 1 fails on test 2 like my version of sh
- does. bash1 doesn't have the bash2 problem on test 5 (getting signals
- that were caught by the child after the child exits).
- zsh fails on test 1 and 5 in a similar way bash2 failed on 5: After a
- child exits that received SIGINT, it terminates immedeatly.
- I wonder how bash 2 manages to fail on test 5, but to pass test 1...
- csh fails on test 1 in two ways:
- - when the SIGINT/SIGQUIT-catching child receives both SIGQUIT and
- SIGINT, csh exits immedeatly, while the child is still running.
- - when only one or more SIGQUIT are delivered to the child, csh gets
- it after the child exits and terminates with coredump.
- csh also ignores SIGQUIT where SIGINT is caught.
- test2.csh is different from test1.sh in that all signals should be
- caught. csh fails in that it sometimes gets SIGQUIT and exits with
- coredump (the shell, not the child).
- Other stuff not directly relevant to these fixes:
- =================================================
- csh oddness:
- ------------
- When the "catcher" program resets the terminal, there's a time-window
- where C-g is mapped to SIGQUIT, but "catcher" already exited. In other
- word, if you type C-g while in "catcher", then immedeatly C-d, csh
- will get SIGQUIT. I thought that remapping the terminal keys should
- have been done before the shell is re-entered. The same happens to
- tcsh.
- With sh variants I didn't manage to deliver SIGQUIT by C-g.
|