ssh application leaks processes(?)
Wed Aug 25 21:23:43 CEST 2010
while using the ssh-2.0 application i encountered the following problem:
The ssh_system_sup supervisor (created via ssh:daemon/1,2,3) has as children
the ssh_acceptor_sup supervisor and for every connected client an
ssh_subsystem_sup supervisor. When a client connection is closed one would
expect that all processes in the supervision tree of this connection die -
which is not the case: the ssh_subsystem_sup process and one child
(ssh_channel_sup) stay alive.
The reason for this behavior is that the child specs of the ssh_channel_sup
and ssh_connection_sup in lib/ssh-2.0/src/ssh_subsystem_sup,erl (line 75 and
line 88) define a 'transient' Restart and while the subtree supervised by
ssh_connection_sup as well as the ssh_connection_sup process itself terminates
on connection close, the ssh_channel_sup process does not. Which leaves 2
processes alive that won't be of any further use.
If the Restart is changed to 'permanent' the problem goes away.
Since lib/ssh-2.0/src/ssh_subsystem_sup,erl contains (line 76 and line 89)
commented out code that sets Restart to permanent; i would like to know what
the reason for a transient Restart might be.
More information about the erlang-questions