Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Mar 2016 20:38:30 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 208188] multiple identical wait4 results for ptraced processes
Message-ID:  <bug-208188-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D208188

            Bug ID: 208188
           Summary: multiple identical wait4 results for ptraced processes
           Product: Base System
           Version: 10.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: joss.upton@yahoo.com

Created attachment 168466
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D168466&action=
=3Dedit
waitx2.c demonstrate the multiple / identical wait4() results.

When ptrace'n a process, wait4() returns the same pid/status multiple times=
.=20
This is when a process is ptrace'd, it gets a new parent and saves its old
parent (in my case both the new parent and the old are the same process).=20
Then, in proc_reap() called from, e.g. wait4(), the ptrace'd process is
reparented back to its "real" parent and an additional SIGCHLD is generated.

The attached program demonstrates the problem... On 10.2 it produces output
like:
0: pid=3D1348 stopped(5)
1: pid=3D1348 exited(0)
2: pid=3D1348 exited(0)

It's impossible to differentiate between 1 & 2 unless I go out of my way to
remember that I've already seen process 1348 WIFEXITED or WIFSIGNALED befor=
e.

The fix is to catch the superfluous SIGCHLD (when the realparent is the pro=
cess
currently waiting on the process) and stub it out.  Patch and example progr=
am
attached.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-208188-8>