ssh: connect() stalls on RedHat 5.1 / kernel 2.0.34

Ville Herva (vherva@niksula.hut.fi)
Tue, 16 Jun 1998 23:37:31 +0300


Ssh version 1.2.22, 1.2.23 and 1.2.25 occasionally stall in
connect(). The stall occurs every now and then, and typically
the succeeding trials fail as well. In more detail, stall means
that ssh stops in connect, and after few minutes times out
without getting a connection.

Needless to say, netwrok works fine (I usually execute ssh
from remote shell in the first place) and the sshd is up and
running (tried from another machine). I can even telnet the
port 22 while this stall goes on.

I can't imagine how this could be a bug in ssh (the connect()
parameters are perfectly correct according to strace), but
I never get these stalls with other programs doing connect().
Further more, I've not seen this on any other RH 5.1 or kernel
2.0.34.

The environment: ssh-1.2.22, ssh-1.2.23 and 1.2.25, all compiled
locally with egcs 1.0.2. The Linux installation is quite vanilla
RedHat 5.1 with the original 2.0.34 kernel. The machine is an
oridinary P90, with a network card that has had no symptoms of
unreliability.

Has anybody else experienced anything similar?

This is what I get from "strace ssh -v -v -v host":

connect(3, {sin_family=AF_INET, sin_port=htons(22),
sin_addr=inet_addr("ip.ip.ip.ip")}, 16) = -1 ETIMEDOUT (Connection timed
out)
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "connect: Connection timed out", 29connect: Connection timed out)
= 29
write(2, "\r\n", 2
) = 2
shutdown(3, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint
is not
connected)
close(3) = 0
nanosleep(0xbffff314, 0xbffff314, 0x400dbb4c, 0x1, 0x1) = 0
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Trying again...", 15Trying again...) = 15
write(2, "\r\n", 2
) = 2
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Connecting to host [ip.ip."..., 47Connecting to host
[ip.ip.ip.ip] port 22.) = 47
write(2, "\r\n", 2
) = 2
geteuid() = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
bind(3, {sin_family=AF_INET, sin_port=htons(1023),
sin_addr=inet_addr("0.0.0.0")
}, 16) = 0
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Allocated local port 1023.", 26Allocated local port 1023.) = 26
write(2, "\r\n", 2
) = 2
connect(3, {sin_family=AF_INET, sin_port=htons(22),
sin_addr=inet_addr("ip.ip.ip.ip")}, 16) = -1 ETIMEDOUT (Connection timed
out)
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "connect: Connection timed out", 29connect: Connection timed out)
= 29
write(2, "\r\n", 2
) = 2
shutdown(3, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint
is not
connected)
close(3) = 0
nanosleep(0xbffff314, 0xbffff314, 0x400dbb4c, 0x1, 0x1) = 0
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Trying again...", 15Trying again...) = 15
write(2, "\r\n", 2
) = 2
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Connecting to host [ip.ip.ip.ip."..., 47Connecting to host] port
22.) = 47
write(2, "\r\n", 2
) = 2
geteuid() = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
bind(3, {sin_family=AF_INET, sin_port=htons(1023),
sin_addr=inet_addr("0.0.0.0")
}, 16) = 0
write(2, "host.cntry: ", 17host.cntry: ) = 17
write(2, "Allocated local port 1023.", 26Allocated local port 1023.) = 26
write(2, "\r\n", 2
) = 2
connect(3, {sin_family=AF_INET, sin_port=htons(22),
sin_addr=inet_addr("ip.ip.ip.ip")}, 16
<unfinished ...>

Received signal 15.

-- v --

v@iki.fi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu