[lldb-dev] Tests leaving behind zombie processes on OS X

Greg Clayton gclayton at apple.com
Wed Apr 1 11:24:33 PDT 2015

Someone isn't reaping their processes. Since you have figured out which tests do this, it shouldn't be too hard to track down. After the python process goes away, all processes get re-parented to launchd and they remain zombies there. Some GDB remote tests actually launch their own process and then they attach to it using the debugserver. In this case, on MacOSX, we still need to reap the process, even though "debugserver" or "lldb-server" also needs to reap it if they don't detach... So on MacOSX:

If you:
- python: launch "a.out" from python
- debugserver: attach to it and debug it and kill
- debugserver: needs to reap "a.out"
- python: needs to reap "a.out"

Not sure if the python needing to reap "a.out" also happens on other unix variants or if this is just Mach/BSD specific? Or just Darwin specific.

> On Mar 31, 2015, at 3:25 PM, Chaoren Lin <chaorenl at google.com> wrote:
> Hi Greg,
> The following tests leave behind zombie a.out processes on OS X after finishing:
> 	• TestGdbRemoteAbort.py
> 	• TestGdbRemoteSegFault.py
> 	• TestGdbRemote_vCont.py
> 	• TestGdbRemoteSingleStep.py
> 	• TestLldbGdbServer.py
> Since the parent is launchd, there is no way to remove them. Eventually our OS X buildbot runs into a zombie apocalypse, and must be rebooted.
> This seems to be a bug in launchd, since it should be reaping the zombies.
> Is there anything we can do about this?
> Thanks,
> Chaoren

More information about the lldb-dev mailing list