reqwest: Request never connects on `armhf`

Hi, this was originally discussed in https://github.com/tokio-rs/mio/issues/1089 where we decided that it probably made sense to migrate the discussion to here.

In brief – A friend (@cjwatson) and I have been diagnosing a fault in rustup on armhf in Snapcraft’s build environment. It seems to sit for 30s trying to connect and then fails. This only seems to happen on armhf – on other platforms it connects just fine.

An strace of the attempt shows:

[pid  3517] 06:37:57.516581 futex(0xf933b8, FUTEX_WAIT_PRIVATE, 0, {tv_sec=29, tv_nsec=990974355} <unfinished ...>
[pid  3518] 06:37:57.516671 <... fcntl64 resumed> ) = 0x2 (flags O_RDWR)
[pid  3518] 06:37:57.516762 fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid  3518] 06:37:57.516894 connect(7, {sa_family=AF_INET, sin_port=htons(8222), sin_addr=inet_addr("10.10.10.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
[pid  3518] 06:37:57.521838 epoll_ctl(4, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLPRI|EPOLLOUT|EPOLLET, {u32=0, u64=0}}) = 0
[pid  3517] 06:38:27.507984 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out)

(Further straces show the epoll_ctl() call takes microsecnds, so it’s not actually stuck in it for 30s, but the thread which did the epoll_ctl() call subsequently did nothing. (Trace attached to the mio bug so I won’t reattach it here).

Interestingly in that strace we never get to epoll_wait() on armhf.

I had previously assumed it was probably mio at fault, but the discussion there suggests it’s more likely in the reqwest/tokio interfacing, so I brought the issue to here to discuss further.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 17 (5 by maintainers)

Most upvoted comments

We may possibly have got to the bottom of this. See https://github.com/lxc/lxcfs/issues/553.

@popey is there any progresses ? Edit: The async example runs well in aarch64-linux-gnu machine. I don’t have armhf to test it.