Bazaar doesn't reap defunct ssh child processes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
New
|
Undecided
|
Unassigned |
Bug Description
When used as a library for another client (e.g. the bzr-eclipse plugin), Bazaar often has defunct child ssh processes. (When using OpenSSH as a transport on Debian GNU/Linux.)
This was reported against bzr-eclipse as Bug #1181946 This does not appear to cause any actual problems with the operation of Bazaar or bzr-eclipse, but certainly not good, particularly with a long-running process like bzr-eclipse where many can collect.
The situtation can be reproduced:
1] Start Python
2] Initialise Bazaar as a library:
import bzrlib
bzrlib.
from bzrlib import commands as c
3] From Python, open a remote connection over ssh:
c.main([u"bzr", u"ls", u"bzr+ssh:
This will open several processes, a client side ssh process, a server side ssh process, and server side bzr process.
4] I found three ways to generate defunct child processes:
4a] Kill the client side ssh process (SIGTERM).
4b] Kill the server side Bazaar or ssh process. (This one will be reaped by Bazaar when another connection is needed.)
4c] Leave the connection open for a timeout period. (Mine was 300 seconds.) This prints a message on the client side.
Some of the processes from 4a and 4c were reaped after a period of time, but I did not determine exactly which ones or when. 4c in particular was troublesome for bzr-eclipse because it will happen in normal operation.
tags: | added: check-for-breezy |