On 09/02/2014 09:31 AM, Adi Roiban wrote:
Problem solved... see below

On 2 September 2014 12:05, Justin Mazzola Paluska <j...@editshare.com> wrote:
On 09/02/2014 05:08 AM, Adi Roiban wrote:
[snip]

         if pid:
             self.processEnded(status)
             unregisterReapProcessHandler(pid, self)
         elif pid == 0:
             # Twisted seems to get stuck if pid is 0, which means that
             # the child process hasn't changed status, but if called
             # after SIGCHLD probably means that the child process is
             # in the process of dying, but hasn't quite died yet.
             # We'll try to kick the reactor to reap the processes
             # again in a bit.
             #
             # We're testing specifically against 0 because pid may
             # also be None in an error case.
             def unstick():
                 reapAllProcesses()
             reactor.callLater(1, unstick)

     _BaseProcess.reapProcess = reapProcess

----

To use this, import your reactor and then call
workaround_reapProcess(reactor).

Now that two of us have seen the same problem, we should probably file a
ticket in the bug tracker.
     --Justin
My quick fix was to only call reactor.callLater(self.reapProcess) and
not to reap all processes

Fair enough.

FWIW, looking at your original code, you may also want to call your Deferreds in a reactor.callLater. I learned the hard way that if you callback a Deferred from processEnded and the callback spawns another process, your process will still be Twisted's process table even though it's dying.


----------

I dig deeper and I found out that since I was using
reactor.run(installSignalHandlers=False)  _SIGCHLDWaker was not
installed.

I have switched to using just reactor.run() and the process is now killed.

Without my workaround, I continue to have the problem with the gtk2reactor.
    --Justin

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to