[Bug 2612] New: Sporadically need to press <ENTER> for multiplexed connection to finish
bugzilla-daemon at bugzilla.mindrot.org
bugzilla-daemon at bugzilla.mindrot.org
Thu Sep 8 16:43:22 AEST 2016
https://bugzilla.mindrot.org/show_bug.cgi?id=2612
Bug ID: 2612
Summary: Sporadically need to press <ENTER> for multiplexed
connection to finish
Product: Portable OpenSSH
Version: 7.3p1
Hardware: amd64
OS: Linux
Status: NEW
Severity: minor
Priority: P5
Component: ssh
Assignee: unassigned-bugs at mindrot.org
Reporter: omar.estrada at gmail.com
Sometimes, when issuing a remote command via a multiplexed connection,
it doesn't finish until I hit <ENTER>. Most of the times it terminates
normally. This occurs approximately 1 out of 10 times. This affects the
usage of multiplexed connections in scripts.
Adding -vvv to the "slave" connection shows:
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 5485
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 3
<Have to hit ENTER here>
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Received exit status from master 0
I checked out the code (commit
775f8a23f2353f5869003c57a213d14b28e0736e) and, after adding some
additional log messages to mux.c, I notice the flow was blocking in
mux_client_read(), in the call to poll():
1428 static int
1429 mux_client_read(int fd, Buffer *b, u_int need)
1430 {
...
1450 case EAGAIN:
1451 (void)poll(&pfd, 1, -1);
<<<<<<<<<<<
1452 /* FALLTHROUGH */
Steps to reproduce:
1. In a terminal, issue:
ssh -M -S $TMPDIR/master <host>
2. In another terminal, issue:
for i in `seq 30`; do ssh -vvv -o ControlPath=$TMPDIR/master <host>
ls; done
Expected behavior: the command finishes running without user
interaction.
Actual behavior: approx. 1 out of 10 times it's necessary to press
<ENTER> (no other key works) to continue executing the command.
WORKAROUND:
Notice that redirecting STDIN to /dev/null works around the problem
(e.g., for i in `seq 30`; do ssh -vvv -o ControlPath=$TMPDIR/master
<host> ls < /dev/null; done
--
You are receiving this mail because:
You are watching the assignee of the bug.
More information about the openssh-bugs
mailing list