[PATCH 3/3] Cygwin: Speed up dumper

Jon Turney jon.turney@dronecode.org.uk
Tue Jul 21 14:26:16 GMT 2020


Stop after we've written the dump in response to the initial breakpoint
EXCEPTION_DEBUG_EVENT we recieve for attaching to the process.

(rather than bogusly sitting there for 20 seconds waiting for more debug
events from a stopped process after we've already written the dump).
---
 winsup/utils/dumper.cc | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/winsup/utils/dumper.cc b/winsup/utils/dumper.cc
index ace752464..e80758e0c 100644
--- a/winsup/utils/dumper.cc
+++ b/winsup/utils/dumper.cc
@@ -615,8 +615,6 @@ out:
 int
 dumper::collect_process_information ()
 {
-  int exception_level = 0;
-
   if (!sane ())
     return 0;
 
@@ -631,7 +629,7 @@ dumper::collect_process_information ()
 
   while (1)
     {
-      if (!WaitForDebugEvent (&current_event, 20000))
+      if (!WaitForDebugEvent (&current_event, INFINITE))
 	return 0;
 
       deb_printf ("got debug event %d\n", current_event.dwDebugEventCode);
@@ -675,12 +673,6 @@ dumper::collect_process_information ()
 
 	case EXCEPTION_DEBUG_EVENT:
 
-	  exception_level++;
-	  if (exception_level == 2)
-	    break;
-	  else if (exception_level > 2)
-	    return 0;
-
 	  collect_memory_sections ();
 
 	  /* got all info. time to dump */
@@ -697,6 +689,9 @@ dumper::collect_process_information ()
 	      goto failed;
 	    };
 
+	  /* We're done */
+	  goto failed;
+
 	  break;
 
 	default:
-- 
2.27.0



More information about the Cygwin-patches mailing list