mirror of
https://https.git.savannah.gnu.org/git/coreutils.git
synced 2026-01-26 07:27:53 +00:00
tail: fix EINTR handling on older systems
tail(1) could fail with an "Interrupted system call" diagnostic, on some systems like Centos 5 (Linux 2.6.18). This was seen with tests/tail/overlay-headers.sh which sends SIGCONT, which should not induce a failure. * src/tail.c (tail_forever_inotify): Retry the poll() upon receiving a non terminating signal, and the syscall is not automatically restarted by the system. * NEWS: Mention the bug fix. Reported by Bruno Haible.
This commit is contained in:
parent
ec77664a31
commit
ebb856730c
4
NEWS
4
NEWS
@ -31,6 +31,10 @@ GNU coreutils NEWS -*- outline -*-
|
||||
'numfmt' no longer drops custom suffixes from numbers it cannot fully parse.
|
||||
[bug introduced with numfmt in coreutils-8.21]
|
||||
|
||||
'tail -f --pid' can no longer exit upon receiving a non terminating signal.
|
||||
On older Linux systems it may have failed with "Interrupted system call".
|
||||
[bug introduced in coreutils-7.5]
|
||||
|
||||
'timeout' will now propagate all terminating signals to the monitored command.
|
||||
Previously 'timeout' could have exited and left the monitored command running.
|
||||
[bug introduced with timeout in coreutils-7.0]
|
||||
|
||||
@ -1684,7 +1684,7 @@ tail_forever_inotify (int wd, struct File_spec *f, int n_files,
|
||||
pfd[1].events = pfd[1].revents = 0;
|
||||
file_change = poll (pfd, monitor_output + 1, delay);
|
||||
}
|
||||
while (file_change == 0);
|
||||
while (file_change == 0 || (file_change < 0 && errno == EINTR));
|
||||
|
||||
if (file_change < 0)
|
||||
error (EXIT_FAILURE, errno,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user