Denys Vlasenko 833fb13cef Remove TCB_SUSPENDED constant and related code.
Since we no longer suspend waitpid'ing tracees, we have only one case when
we suspend tracee: when we pick up a new tracee created by clone/fork/vfork.

Background: on some other OSes, attach to child is done this way:
get fork's result (pid), loop ptrace(PTRACE_ATTACH) until you hook up
new process/thread. This is ugly and not safe, but what matters for us
is that it doesn't require suspending. Suspending is required
on Linux only, because on Linux attach to child is done differently.

On Linux, we use two methods of catching new tracee:
adding CLONE_THREAD bit to syscall (if needed, we change
[v]fork into clone before that), or using ptrace options.
In both cases, it may be so that new tracee appears before one which
created it returns from syscall. In this case, current code
suspends new tracee until its creator returns. Only then
strace can determine who is its parent (it needs child's pid for this,
which is visible in parent's [v]fork/clone result).
This is inherently racy. For example, what if SIGKILL kills
creator after it succeeded creating child, but before it returns?
Looks like we will have child suspended forever.

But after previous commit, we DO NOT NEED parent<->child link for anything.
Therefore we do not need suspending too. Bingo!

This patch removes suspending code. Now new tracees will be continued
right away. Next patch will remove tcp->parent member.

* defs.h: Remove TCB_SUSPENDED constant
* process.c (handle_new_child): Delete this function.
  (internal_fork): Do not call handle_new_child on syscall exit.
* strace.c (handle_ptrace_event): Delete this function.
  (trace): Do not suspend new child; remove all handling
  of now impossible TCB_SUSPENDED condition.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2011-08-17 11:30:56 +02:00
2011-03-14 15:39:36 +00:00
2011-02-25 16:53:50 +00:00
2011-06-09 15:16:01 +00:00
2011-03-14 15:32:38 +00:00
2011-06-07 12:13:24 +02:00
2009-07-08 21:01:21 +00:00
2002-03-31 18:43:00 +00:00
2011-06-22 14:32:43 +02:00
2011-03-15 15:46:52 +00:00
2011-06-22 14:32:43 +02:00
2009-09-18 12:07:03 +00:00
2011-06-22 14:32:43 +02:00
2011-06-13 21:58:43 +00:00
2011-06-07 12:13:24 +02:00
2011-06-07 12:13:24 +02:00
2011-06-22 14:32:43 +02:00
2011-03-14 15:39:36 +00:00
1999-02-19 00:21:36 +00:00
2011-06-22 14:32:43 +02:00
2009-02-23 08:07:45 +00:00
2009-07-08 21:01:21 +00:00
1999-02-19 00:21:36 +00:00
2010-07-17 17:46:28 +02:00
2009-09-18 12:07:03 +00:00
2011-06-07 12:13:24 +02:00
2011-03-14 15:39:36 +00:00
2011-06-07 12:13:24 +02:00
2009-09-18 12:07:03 +00:00
2010-02-04 22:40:57 +00:00
2011-06-22 14:32:43 +02:00
2001-07-10 13:48:44 +00:00
1999-02-19 00:21:36 +00:00

This is strace 4.0, a system call tracer for SunOS 4.x, Linux, System
V release 4, Solaris 2.x and Irix 5.x.  strace is released under a
Berkeley-style license at the request of Paul Kranenburg; see the file
COPYRIGHT for details.

Read the INSTALL file for generic instructions on how to install
strace.  If configure cannot guess your system configuration, you can
specify it on the command line after the other options like this:

	./configure --prefix=/usr i486-linux

A single sunos4.1 binary should work on all the sun4, sun4c and sun4m
kernel architectures.  Let me know if sun4d doesn't work.  Other
i486-*-sysv4 systems may work with little or no tweaking.

See the file NEWS for information on what has changed in recent
versions.

See the file PORTING if you like strace but it doesn't work on an
operating system you use frequently.

See the file CREDITS to see who has contributed to strace.

See the file TODO if you feel like helping out.

You can get the latest version of strace from its homepage at
http://sourceforge.net/projects/strace/ .

Please send bug reports and enhancements to the strace
mailinglist at strace-devel@lists.sourceforge.net, or directly to
Wichert Akkerman <wakkerma@debian.org>
Description
No description provided
Readme 17 MiB
Languages
C 92.2%
Shell 3.4%
M4 1.4%
Makefile 0.8%
Roff 0.7%
Other 1.5%