Age | Commit message (Collapse) | Author |
|
These issues were seen on an OpenSuse 10.3 system
(kernel 2.6.22.5 x86_64, glibc 2.6.1-18, bash updated to 4.2),
and also on a 64 bit SLES system with a 2.6.16 kernel.
Both systems had 2 CPUs.
There were two issues seen. 1. Occasionally the
timeout.cmd shell script would block SIGINT until
the sleep command exited. 2. Much less frequently the
signal handler in the timeout command itself was ignored,
causing SIGALRM to kill the process.
* tests/misc/timeout-group: Detect the above two cases,
and skip rather than fail. Note only issue 2. causes
a failure unless skipped, but we skip for case 1. also,
for diagnostic purposes.
|
|
This could cause a false failure, or even
an infinite loop in rare circumstances.
* tests/misc/timeout-group: Increase the timeouts
passed to the timeout command, so that they're
effectively not used. Instead the command termination
is triggered by the kill commands when everything
is in the correct state.
Reported by Bernhard Voelker.
|
|
* src/timeout.c (cleanup): Send signals directly to the child
in case it has started its own process group (like a cascaded
timeout command would for example).
* test/misc/timeout-group: Add a test case.
* NEWS: Mention the fix.
|
|
Or more accurately, commands not started from the shell prompt,
that are interactive, or need to receive Ctrl-C etc. from the terminal.
* doc/coreutils.texi (timeout invocation): Document --foreground.
* src/timeout.c (main): Set the foreground flag and don't create
a separate group.
(cleanup): Only send a signal directly to the monitored command
when the foreground flag is set.
(usage): Describe --foreground.
* tests/misc/timeout-group: Add a new test.
* tests/Makefile.am: Reference new test.
NEWS: Mention the new option.
Reported by Shay Shimony
Analysis by Alan Curry
Fix suggested by Paul Eggert
|