[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: zombie ssh processes

From: Peter Samuelson <peter_at_p12n.org>
Date: Fri, 27 Mar 2009 13:58:19 -0500

[Clark S. Cox III]
> - APR_KILL_{ALWAYS,AFTER_TIMEOUT,ONLY_ONCE} are inappropriate in the
> connection sharing case. When the svn co completed, the shared
> connection was severed, and the second ssh session was disconnected,
> however with those options, the ssh subprocesses of the library-using
> clients (such as Xcode) were properly reaped.
> - APR_KILL_NEVER is inappropriate in the GUI client case (ssh
> subprocesses of Xcode were not reaped until Xcode itself was
> terminated).
> - APR_JUST_WAIT is inappropriate, as the process (whether it be svn or
> Xcode) that started the master ssh connection blocks until any other
> ssh's using the same shared connection are terminated.
> It seems that OpenSSH's connection sharing and svn's use of ssh are
> fundamentally incompatible. At the very least, it doesn't seem that
> there is a simple fix for both issues.

Some years ago, in Debian, I've applied two patches related to ssh
connection sharing. One uses APR_KILL_AFTER_TIMEOUT, because as we've
all noted, SIGKILL causes various problems with connection sharing and
other things. The other is a simple patch to the default
~/.subversion/config file:

    ssh = $SVN_SSH ssh -o ControlMaster=no

so that Subversion's ssh process never controls the shared socket.
It will still _use_ connection sharing, but will not _initiate_ it.

I would have proposed both patches for integration a long time ago, but
the first one depends on a version of OpenSSH patched not to complain
when it is killed with a non-KILL signal; the second depends on a
version of OpenSSH new enough to recognise the 'ControlMaster' option.
I can rely on both things in Debian, but I don't know that all
Subversion installations could.

Peter Samuelson | org-tld!p12n!peter | http://p12n.org/

Received on 2009-03-27 19:58:45 CET

This is an archived mail posted to the Subversion Dev mailing list.