This bug is related to issue12540. The approach taken there is to have the IDLE frontend explicitly kill the subprocess. It's a band-aid to the problem that run.py doesn't exit when the socket to the IDLE frontend closes (either by shell restart or kill -9 on IDLE).
Attached is a patch to cause the subprocess to exit. I have to admit not fully understanding why it works (on Ubuntu 11.04).
It looks like the following code in _getresponse() in rpc.py is what keeps the subprocess running:
cvar.acquire()
while myseq not in self.responses:
cvar.wait()
I also tried disabling the "terminate_subprocess" in PyShell.py. With that change, the subprocess does not terminate on a shell restart (unless my patch is applied).
Andrew, Terry: What are your thoughts? |