[Bug 3905] Deadlock when channel window adjust is stuck behind sftp read requests

bugzilla-daemon at mindrot.org bugzilla-daemon at mindrot.org
Thu Dec 18 13:47:53 AEDT 2025


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

Damien Miller <djm at mindrot.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |djm at mindrot.org

--- Comment #2 from Damien Miller <djm at mindrot.org> ---
I don't think I'm following this properly because I don't see how the
deadlock occurs.

AFAIK it goes like this:

1. A client sends a bunch of read requests, enough to fill its entire
receive window.

2. The server responds to these read requests and the window fills.

3. As the client receives the responses from the server, it will
enqueue window adjust messages. These will naturally be sent after all
the read requests.

Here's where my understanding of the deadlock breaks down.

AIUI at this point, the server's channel layer has a bunch of queued
data that represents SFTP read requests 

In OpenSSH the channel layer is completely agnostic to the contents of
the queue channel data (for us these aren't just separate layers, but
entirely separate binaries). This data in the channel's receive buffer
does not prevent the handling of window adjust messages; we consider
those not as channel _data_ but separate control messages.

As the window adjusts are processed, the server opens up its send
window again, allowing the sftp layer to go back to reading requests.

Do I misunderstand the setup or are you using a different architecture
that treats window adjust messages as more in-band?

-- 
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.


More information about the openssh-bugs mailing list