]> sourceware.org Git - newlib-cygwin.git/commitdiff
* strace.cc (attach_process): Don't tell process to start stracing here.
authorChristopher Faylor <me@cgf.cx>
Mon, 27 May 2002 01:49:08 +0000 (01:49 +0000)
committerChristopher Faylor <me@cgf.cx>
Mon, 27 May 2002 01:49:08 +0000 (01:49 +0000)
(proc_child): Do it here, instead, after first debug event.  This should work
around inexplicable races with DebugActiveProcess.
(dostrace): Pass any pid argument to proc_child.

winsup/utils/ChangeLog
winsup/utils/strace.cc

index 404f93d31e13709e614b2a2ae5a5a27e11590596..0664b9bebaf649d1bd2d68111b5d0108690d0e7f 100644 (file)
@@ -1,3 +1,11 @@
+2002-05-26  Christopher Faylor  <cgf@redhat.com>
+
+       * strace.cc (attach_process): Don't tell process to start stracing
+       here.
+       (proc_child): Do it here, instead, after first debug event.  This
+       should work around inexplicable races with DebugActiveProcess.
+       (dostrace): Pass any pid argument to proc_child.
+
 2002-05-23  Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
 
         * setfacl.c (usage): Standardize usage output. Change return type to
index 6bb145c0f802ba01119ba0d9cb62a3fdf40f4c88..99664ad087d91163777cba2110becd52e5c65401 100644 (file)
@@ -291,7 +291,6 @@ attach_process (pid_t pid)
   if (!DebugActiveProcess (child_pid))
     error (0, "couldn't attach to pid %d<%d> for debugging", pid, child_pid);
 
-  (void) cygwin_internal (CW_STRACE_TOGGLE, pid);
   printf ("Attached to pid %d (windows pid %u)\n", pid, (unsigned) child_pid);
   return;
 }
@@ -572,7 +571,7 @@ handle_output_debug_string (DWORD id, LPVOID p, unsigned mask, FILE *ofile)
 }
 
 static void
-proc_child (unsigned mask, FILE *ofile)
+proc_child (unsigned mask, FILE *ofile, pid_t pid)
 {
   DEBUG_EVENT ev;
   int processes = 0;
@@ -595,6 +594,12 @@ proc_child (unsigned mask, FILE *ofile)
       if (!debug_event)
        continue;
 
+      if (pid)
+       {
+         (void) cygwin_internal (CW_STRACE_TOGGLE, pid);
+         pid = 0;
+       }
+
       switch (ev.dwDebugEventCode)
        {
        case CREATE_PROCESS_DEBUG_EVENT:
@@ -651,7 +656,7 @@ dostrace (unsigned mask, FILE *ofile, pid_t pid, char **argv)
     create_child (argv);
   else
     attach_process (pid);
-  proc_child (mask, ofile);
+  proc_child (mask, ofile, pid);
 
   return;
 }
This page took 0.035565 seconds and 5 git commands to generate.