Skip to content

http: fixing a fuzz flake by setting details on connection teardown#12737

Merged
snowp merged 2 commits intoenvoyproxy:masterfrom
alyssawilk:fuzz_bug
Aug 21, 2020
Merged

http: fixing a fuzz flake by setting details on connection teardown#12737
snowp merged 2 commits intoenvoyproxy:masterfrom
alyssawilk:fuzz_bug

Conversation

@alyssawilk
Copy link
Contributor

Additional Description:
affects 3 cases

  • local connection close (should only be hit during shutdown)
  • duration timeout, which was a preexisting connection close which didn't have details.
  • codec failure, which set connection level details rather than stream level details
    Risk Level: low
    Testing: fuzz test passes cleanly with 1k+ runs
    Docs Changes: n/a
    Release Notes: n/a
    Fixes //test/integration:h1_capture_fuzz_test flake (ASAN) #12663

…wn get details

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Copy link
Contributor

@asraa asraa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, questions non-blocking.Thank you so much!

stream.response_encoder_->getStream().responseDetails());
} else if (!details.empty()) {
stream.filter_manager_.streamInfo().setResponseCodeDetails(details);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

qq -- this fixes these three cases, but there's no "catch all" for if the response details are still empty. This in the hopes that the ASSERT will reveal anything missing, is that right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, the assert should take care of it.
The only place we set empty details is the idle timeout, which should only fire if there are no streams to terminate. If others add other empty strings it's annoying and will trigger a debug assert for "you are doing the wrong thing" but given it's just missing debug info, not mission critical, I think that's fine.

Copy link
Contributor

@snowp snowp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the fix!

@snowp snowp merged commit b7c4093 into envoyproxy:master Aug 21, 2020
lavignes added a commit to lavignes/envoy that referenced this pull request Aug 24, 2020
* envoy/master: (90 commits)
  cleanup: use structured binding (envoyproxy#12791)
  docs: fix header name for retries in gRPC services (envoyproxy#12790)
  docs: clarify meaning of HeaderValueOption.append (envoyproxy#12792)
  doc: clarify handling of duplicate xDS resource names (envoyproxy#12756)
  Dependencies: build updates. (envoyproxy#12786)
  Ratelimit: Add optional descriptor key to generic_key action (envoyproxy#12734)
  test: refactor header inclusion to speed up building (for test/mocks/upstream:upstream_mocks)  (envoyproxy#12407)
  docs: Fix omitted word (envoyproxy#12782)
  ci: avoid uploading dwp as separate artifact (envoyproxy#12777)
  doc: Fix small typos (envoyproxy#12769)
  fix cache factory category (envoyproxy#12765)
  docs: fix typo v1.15.0.rst (envoyproxy#12680)
  Add clang-cl RBE toolchain for Windows (envoyproxy#12776)
  fuzz: add router fuzz proto (envoyproxy#12727)
  header: New HeaderMatcher and StringMatcher type - Contains (envoyproxy#12623)
  tcp_proxy: use dynamicMetadata() from StreamInfo for load balancing (envoyproxy#12595)
  network: add io handle recv function for http inspector (envoyproxy#12736)
  jwt_authn: supports jwt payload without "iss" field (envoyproxy#12744)
  Add support for nested JSON format in json logging mode (envoyproxy#12602)
  http: fixing a fuzz flake by setting details on connection teardown (envoyproxy#12737)
  ...

Signed-off-by: Scott LaVigne <lavignes@amazon.com>
@alyssawilk alyssawilk deleted the fuzz_bug branch December 10, 2020 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

//test/integration:h1_capture_fuzz_test flake (ASAN)

3 participants