Comment 30 for bug 1357578

Nikola ─Éipanov (ndipanov) wrote :

Here's one more theory - Lifeless noticed correctly that "_start_child in is leaky" but that really should not matter because child processes should die if the parent dies an unexpected death (from openstack/common/

This bit happens in the forked worker:

 def _child_process(self, service):

        # Reopen the eventlet hub to make sure we don't share an epoll
        # fd with parent and/or siblings, which would be bad

        # Close write to ensure only parent has it open
        # Create greenthread to watch for parent to close pipe

and the _pipe_watcher method:

   def _pipe_watcher(self):
        # This will block until the write end is closed when the parent
        # dies unexpectedly'Parent process has died unexpectedly, exiting'))


interesting bit is that it will only raise a SystemExit (not sure why it doesn't do the os._exit there) in a fork of a testr process that might actually be handling it in some way that can cause unexpected behavior?