seastar: unit.tls sometimes fails on short read

.../unit/tls_test.cc(89): error: in "test_x509_client_with_builder_system_trust_multiple": check buf.size() > 8 has failed

Failing assertion:

                            auto f = in.read();
                            return f.then([](temporary_buffer<char> buf) {
                                // std::cout << buf.get() << std::endl;

                                // Avoid passing a nullptr as an argument of strncmp().
                                // If the temporary_buffer is empty (e.g. due to the underlying TCP connection
                                // being reset) passing the buf.get() (which would be a nullptr) to strncmp()
                                // causes a runtime error which masks the actual issue.
                                if (buf) {
                                    BOOST_CHECK(strncmp(buf.get(), "HTTP/", 5) == 0);
                                }
This one >>>                    BOOST_CHECK(buf.size() > 8);
                            });

examples: https://app.circleci.com/pipelines/github/scylladb/seastar/1306/workflows/34276448-c252-4b70-979c-e200e290a024/jobs/2577 https://app.circleci.com/pipelines/github/scylladb/seastar/1309/workflows/9be37ca0-183b-4225-bbdf-a0095be22261/jobs/2619

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 19 (19 by maintainers)

Commits related to this issue

Most upvoted comments

But we can’t really push verification into separate, pre-empted, threads either - they are way to many

Why can’t we make it in the thread-pool’s thread? Even if there are many verifications, let them “stall” in the context of that thread, not reactor.