diff options
author | Christopher Faylor <me@cgf.cx> | 2002-05-27 01:49:08 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-05-27 01:49:08 +0000 |
commit | d73f9745f1fb89f14ce407aaafc3598036a65170 (patch) | |
tree | 388d541ad70b2c3130404d8d75bb36ac7b5cfec7 | |
parent | 40a4eb73004e5e91d01a72ca4978fb18b8ce02b2 (diff) | |
download | newlib-d73f9745f1fb89f14ce407aaafc3598036a65170.zip newlib-d73f9745f1fb89f14ce407aaafc3598036a65170.tar.gz newlib-d73f9745f1fb89f14ce407aaafc3598036a65170.tar.bz2 |
* 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.
-rw-r--r-- | winsup/utils/ChangeLog | 8 | ||||
-rw-r--r-- | winsup/utils/strace.cc | 11 |
2 files changed, 16 insertions, 3 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 404f93d..0664b9b 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -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 diff --git a/winsup/utils/strace.cc b/winsup/utils/strace.cc index 6bb145c..99664ad 100644 --- a/winsup/utils/strace.cc +++ b/winsup/utils/strace.cc @@ -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; } |