From 328258eba44993f05e6238c4c9b2124e2496fb4d Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 11 Jul 2023 11:17:56 +0100 Subject: Cygwin: testsuite: Add a simple timeout mechanism Astonishingly, we don't have this already, so tests which hang just stop the testsuite dead in it's tracks... Signed-off-by: Jon Turney --- winsup/testsuite/cygrun.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'winsup/testsuite') diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index e6c4aa705..925b5513f 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -20,6 +20,7 @@ main (int argc, char **argv) { STARTUPINFO sa; PROCESS_INFORMATION pi; + DWORD res; DWORD ec = 1; char *p; @@ -42,9 +43,21 @@ main (int argc, char **argv) exit (1); } - WaitForSingleObject (pi.hProcess, INFINITE); + res = WaitForSingleObject (pi.hProcess, 60 * 1000); - GetExitCodeProcess (pi.hProcess, &ec); + if (res == WAIT_TIMEOUT) + { + char cmd[1024]; + // there is no simple API to kill a Windows process tree + sprintf(cmd, "taskkill /f /t /pid %lu", GetProcessId(pi.hProcess)); + system(cmd); + fprintf (stderr, "Timeout\n"); + ec = 124; + } + else + { + GetExitCodeProcess (pi.hProcess, &ec); + } CloseHandle (pi.hProcess); CloseHandle (pi.hThread); -- cgit v1.2.3