+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
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;
}
}
static void
-proc_child (unsigned mask, FILE *ofile)
+proc_child (unsigned mask, FILE *ofile, pid_t pid)
{
DEBUG_EVENT ev;
int processes = 0;
if (!debug_event)
continue;
+ if (pid)
+ {
+ (void) cygwin_internal (CW_STRACE_TOGGLE, pid);
+ pid = 0;
+ }
+
switch (ev.dwDebugEventCode)
{
case CREATE_PROCESS_DEBUG_EVENT:
create_child (argv);
else
attach_process (pid);
- proc_child (mask, ofile);
+ proc_child (mask, ofile, pid);
return;
}