[Bug 3405] New: clientloop's client_wait_until_can_do_something uses 100 % CPU with ssh 2> >({exec 1>&2})

bugzilla-daemon at mindrot.org bugzilla-daemon at mindrot.org
Mon Mar 14 22:18:10 AEDT 2022


https://bugzilla.mindrot.org/show_bug.cgi?id=3405

            Bug ID: 3405
           Summary: clientloop's client_wait_until_can_do_something uses
                    100 % CPU with ssh 2> >({exec 1>&2})
           Product: Portable OpenSSH
           Version: 8.9p1
          Hardware: amd64
                OS: Linux
            Status: NEW
          Severity: minor
          Priority: P5
         Component: ssh
          Assignee: unassigned-bugs at mindrot.org
          Reporter: nathanmonfils at gmail.com

Hi,

This is a bit of an edge-case (and I've already found a workaround
using `exec tee`), but since updating to the latest release I've had
100 % CPU usage on a script, which you can replicate with `ssh <host>
2> >({exec 1>&2})`. (I'm actually redirecting stderr to a shell
function that parses it for a while then gives up on it by doing `exec
1>&2`).

After a few seconds, the ssh process starts using 100 % CPU. Using GDB,
I consistently get the following trace:

<SNIP>
#1  0x0000556af8a302e1 in poll (__timeout=<optimized out>,
__nfds=<optimized out>, __fds=<optimized out>)
    at /usr/include/bits/poll2.h:39
#2  client_wait_until_can_do_something (conn_out_readyp=<synthetic
pointer>, conn_in_readyp=<synthetic pointer>, 
    rekeying=<optimized out>, npfd_activep=0x7ffe8c32d07c,
npfd_allocp=0x7ffe8c32d078, pfdp=0x7ffe8c32d080, ssh=0x556af964bf80)
    at clientloop.c:575
<SNIP>

I'm guessing this is linked to OpenBSD-Commit
a77e16a667d5b194dcdb3b76308b8bba7fa7239c "upstream: convert ssh, sshd
mainloops from select() to poll();".

-- 
You are receiving this mail because:
You are watching the assignee of the bug.


More information about the openssh-bugs mailing list