rust-lang / rust-lang/ssh2-rs

Tests fail at high build concurrency for default openssh config

Open
#135 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Rust
Stars
566
Forks
163
Avg merge
4h 51m
Merged PRs (30d)
2

Description

cargo test fails for me most of the time with --test-threads=24, even on a dual core machine, and ~30% of the time with $(nproc) == 12.

Random tests fail with: 'called Result::unwrap() on an Err value: Error { code: -43, msg: "Failed getting banner" }', at https://github.com/alexcrichton/ssh2-rs/blob/cab5f0fc9f217a577ad7614e5539e0d0315279b1/tests/all/main.rs#L27
-43 is LIBSSH2_ERROR_SOCKET_RECV.

If you enable debugging (cfg.define("LIBSSH2DEBUG", None); cfg.define("HAVE_GETTIMEOFDAY", None); and cripple the filtering) you can see that the connection is being closed.

Initially I thought this was a horrible thread safety bug (and spent ages on that), but it's probably just openssh's default MaxSessions 10, which means no more than 10 people can be logging in at a time, so, uh, probably a minor documentation note, instead of the cool bug I was hoping for?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with cargo test --test-threads=24 and inspect the referenced test at tests/all/main.rs, alongside the OpenSSH MaxSessions 10 behavior described in the issue. Determine where this concurrency limitation should be documented; done means the high-concurrency failure and relevant configuration or test guidance are clearly recorded.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
documentation, testing-qa
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.