Hello, Ludovic Courtès <[email protected]> skribis:
> A simple thing would be to somehow get libssh to pass POLLIN | POLLRDHUP > instead of just POLLIN. Reported here: https://www.libssh.org/archive/libssh/2019-01/0000000.html A fix has been proposed by upstream and should be committed shortly. > Additionally, we could change Guile-SSH so that we can specify a timeout > when reading from a channel. Turns out we can set a per-session timeout, which we already do (see #:timeout in ‘open-ssh-session’ in (guix scripts offload)) but ‘ssh_channel_read’ would ignore it and instead pass an infinite timeout to poll(2): https://www.libssh.org/archive/libssh/2019-01/0000001.html This issue happens to be fixed in libssh 0.8.x, so I upgraded our libssh package in commit a8b0556ea1e439c89dc1ba33c8864e8b9b811f08. (That still doesn’t tell us why our ‘guix offload’ processes would occasionally be stuck but at least it ensures the build farm keeps making progress even when that happens.) Ludo’.
