diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2024-01-23 16:07:34 +0000 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2024-01-25 14:32:00 +0000 |
commit | 1c13ca67b506df56c512d1a706eb6f45d9b4da38 (patch) | |
tree | 3a2f20d516133646669c12bc2a113ff28bb97ffa /winsup | |
parent | 4d9808d404c21c73ff4f96547d2d5b6174323881 (diff) | |
download | newlib-1c13ca67b506df56c512d1a706eb6f45d9b4da38.zip newlib-1c13ca67b506df56c512d1a706eb6f45d9b4da38.tar.gz newlib-1c13ca67b506df56c512d1a706eb6f45d9b4da38.tar.bz2 |
Cygwin: Add a timeout to ensure we don't wait forever for dumper
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/exceptions.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 0e1a804..a2a6f9d 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -540,6 +540,9 @@ int exec_prepared_command (PWCHAR command) } FreeEnvironmentStringsW (rawenv); + /* timeout from waiting for debugger to attach after 10 seconds */ + ULONGLONG timeout = GetTickCount64() + 10*1000; + console_printf ("*** starting '%W' for pid %u, tid %u\r\n", command, cygwin_pid (GetCurrentProcessId ()), GetCurrentThreadId ()); @@ -562,7 +565,8 @@ int exec_prepared_command (PWCHAR command) we continue or not. Note that this is still racy: if the error_start process does it's work too - fast, we don't notice that it attached and get stuck here. + fast, we don't notice that it attached and get stuck here. So we also + apply a timeout to ensure we exit eventually. */ *dbg_end = L'\0'; @@ -570,7 +574,7 @@ int exec_prepared_command (PWCHAR command) system_printf ("Failed to start, %E"); else { - while (!being_debugged ()) + while (!being_debugged () && GetTickCount64() < timeout) Sleep (0); Sleep (2000); } |