BUG: NTPL: waitpid() doesn't return?

Matthias Urlichs smurf at smurf.noris.de
Sat Jan 31 14:41:01 UTC 2004


[ Cc to strace-devel ... see below ]

> > Those "Process ### suspended" messages did NOT happen with the Python
> > script that exhibits the bug.
> This is an strace bug.  Because of goofy ptrace interactions, strace does
> funny business with threads doing wait calls.  strace should resume those
> threads when the pids they are waiting for exit.  
I use Debian 4.5-1. Is there a newer version?

> To research the issue thoroughly, you may have to avoid relying on strace
> to tell you what calls your programs make.

Hmm. What triggers strace to stop (or not) processes which do waidpid()?

Not using strace is a bit difficult, as exhibited by the fact that a
program's fork() call is translated to a clone() by glibc, so I can't
see what's happening.

Anyway, on my dual PIII here, tracing the attached program is
highly nondeterministic -- in that it sometimes crashes:

$ strace -f -o /tmp/tep  $HOME/tepr
Thread 0 Launched pid 18095
Thread 2 Launched pid 18100
Thread 3 Launched pid 18105
Thread 1 Launched pid 18099
Thread 4 Launched pid 18107
Thread 5 Launched pid 18110
Thread 6 Launched pid 18113
Thread 7 Launched pid 18116
Thread 0 waitpid for 18095 returned for 18095, status: 1
Thread 2 waitpid for 18100 returned for 18100, status: 1
Thread 3 waitpid for 18105 returned for 18105, status: 1
Thread 1 waitpid for 18099 returned for 18099, status: 1
Thread 4 waitpid for 18107 returned for 18107, status: 1
Thread 5 waitpid for 18110 returned for 18110, status: 1
Thread 6 waitpid for 18113 returned for 18113, status: 1
Thread 7 waitpid for 18116 returned for 18116, status: 1
$ strace -f -o /tmp/tep  $HOME/tepr
  [tcb table full]
  ptrace: umoven: No such process
  trace: ptrace(PTRACE_SYSCALL, ...): No such process

In other words, sometimes it runs without a problem, sometimes it hangs
while waiting. No such problems are visible on my single-CPU machine.

This is kernel 2.6.2-rc1-smp, no patches; the system runs Debian unstable.

Attached: tepr.c, tep.gz.

Matthias Urlichs     |     noris network AG     |     http://smurf.noris.de/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tepr.c
Type: text/x-csrc
Size: 1346 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20040131/d872910a/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tep.gz
Type: application/octet-stream
Size: 1839 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20040131/d872910a/attachment.obj>

More information about the Strace-devel mailing list