From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2201) id A3DAC3857718; Fri, 14 Jul 2023 15:27:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A3DAC3857718 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1689348478; bh=RkvMzTYmyHpaq0IINdE9g4YDRgytH/PVWZZdZ531W7I=; h=From:To:Subject:Date:From; b=nImHeyECwR6zmx8bwhZ9UzDyvhpDCQePvsLr4cM0wwks97xYeWpRkQarQ6VIRqxn0 yISnsTYZy+stYa0LUyVPlkoZd5JC+TFaOhfZPM4bsLvEVbG1iiRU7ODMDXF3GvInXE O4INbGwAXQzQQFJjzsgslTCiBpV0PRL6yDmob4Jg= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jon Turney To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: testsuite: Add a simple timeout mechanism X-Act-Checkin: newlib-cygwin X-Git-Author: Jon Turney X-Git-Refname: refs/heads/master X-Git-Oldrev: e8c1a579cdc5fc71b1aac1e747f6b10d4a1e8fd6 X-Git-Newrev: 328258eba44993f05e6238c4c9b2124e2496fb4d Message-Id: <20230714152758.A3DAC3857718@sourceware.org> Date: Fri, 14 Jul 2023 15:27:58 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D328258eba44= 993f05e6238c4c9b2124e2496fb4d commit 328258eba44993f05e6238c4c9b2124e2496fb4d Author: Jon Turney Date: Tue Jul 11 11:17:56 2023 +0100 Cygwin: testsuite: Add a simple timeout mechanism =20 Astonishingly, we don't have this already, so tests which hang just stop the testsuite dead in it's tracks... =20 Signed-off-by: Jon Turney Diff: --- winsup/testsuite/cygrun.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) 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 =3D 1; char *p; =20 @@ -42,9 +43,21 @@ main (int argc, char **argv) exit (1); } =20 - WaitForSingleObject (pi.hProcess, INFINITE); + res =3D WaitForSingleObject (pi.hProcess, 60 * 1000); =20 - GetExitCodeProcess (pi.hProcess, &ec); + if (res =3D=3D 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 =3D 124; + } + else + { + GetExitCodeProcess (pi.hProcess, &ec); + } =20 CloseHandle (pi.hProcess); CloseHandle (pi.hThread);