Update.
2003-06-19 Jakub Jelinek <jakub@redhat.com> * test-skeleton.c (timeout_handler): If waitpid returned 0, retry once after a second. If killed == 0, assume WTERMSIG (status) == SIGKILL.
This commit is contained in:
parent
7f8f7b9dc8
commit
6d0e6e844d
|
@ -1,3 +1,9 @@
|
||||||
|
2003-06-19 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* test-skeleton.c (timeout_handler): If waitpid returned 0,
|
||||||
|
retry once after a second. If killed == 0, assume
|
||||||
|
WTERMSIG (status) == SIGKILL.
|
||||||
|
|
||||||
2003-06-18 Roland McGrath <roland@redhat.com>
|
2003-06-18 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized
|
* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized
|
||||||
|
|
|
@ -139,7 +139,20 @@ timeout_handler (int sig __attribute__ ((unused)))
|
||||||
kill (pid, SIGKILL);
|
kill (pid, SIGKILL);
|
||||||
|
|
||||||
/* Wait for it to terminate. */
|
/* Wait for it to terminate. */
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 5; ++i)
|
||||||
|
{
|
||||||
killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
|
killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
|
||||||
|
if (killed != 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Delay, give the system time to process the kill. If the
|
||||||
|
nanosleep() call return prematurely, all the better. We
|
||||||
|
won't restart it since this probably means the child process
|
||||||
|
finally died. */
|
||||||
|
struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 };
|
||||||
|
nanosleep (&ts, NULL);
|
||||||
|
}
|
||||||
if (killed != 0 && killed != pid)
|
if (killed != 0 && killed != pid)
|
||||||
{
|
{
|
||||||
perror ("Failed to killed test process");
|
perror ("Failed to killed test process");
|
||||||
|
@ -156,7 +169,7 @@ timeout_handler (int sig __attribute__ ((unused)))
|
||||||
exit (0);
|
exit (0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL)
|
if (killed == 0 || (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL))
|
||||||
fputs ("Timed out: killed the child process\n", stderr);
|
fputs ("Timed out: killed the child process\n", stderr);
|
||||||
else if (WIFSTOPPED (status))
|
else if (WIFSTOPPED (status))
|
||||||
fprintf (stderr, "Timed out: the child process was %s\n",
|
fprintf (stderr, "Timed out: the child process was %s\n",
|
||||||
|
|
Loading…
Reference in New Issue