* 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.
This commit is contained in:
Christopher Faylor 2002-05-27 01:49:08 +00:00
parent 40a4eb7300
commit d73f9745f1
2 changed files with 16 additions and 3 deletions

View 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

View 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;
}