-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
envoy crash when test http3 upgrade #18160
Comments
Just a reminder while QUIC is in alpha we're working hard to get it to GA so please do check in with envoy-security before posting crash reports publicly :-) That said thanks for the report. Any chance you can get symbols on that stack trace? cc @danzh2010 |
Actually I'm going to pull this from the MVP list as the connect config is separately tagged alpha, so I think QUIC in general can GA without connect support being trusted in prod. |
oops, redacting, not an upgrade specific issue I misread |
From coredump and corresponding code, the reason of this issue is that envoy could not handle quic stream creation failure gracefully. A known issue, so close it. By the way, I find that the support for http3 is still under heavy deployment, there are still many things to do. And I'd like to make some contributions in my spare time. Are there any suggestions on where to start @alyssawilk ? thanks :) |
cc @danzh2010 this is the same issue Chidera hit. I think we need to fix this one. |
Thanks for the core dump @YaoZengzeng! And welcome to contribute to Envoy HTTP/3. Currently the issues in MVP list already have owner. But if you would like to work on any new features, or fix bugs, feel free to create an issue for discussion first and creating PRs following general Envoy contribution guide. You can refer to the QUIC dev doc for design and implementation overview. And feel free to join envoy-udp-quic-dev channel(channel ID: C9UGU858E) on slack for new announcement and discussion. |
@danzh2010 Thanks for your advice :) |
This is a 99% fix to the too many streams crash: we weren't setting the 100 stream limit in quiche, and the default of 0 for Envoy meant "allow thousands of streams" which resulted in stream creation failure and null pointer deref. Unfortunately when aligning the stream limits, we still fail a check in quiche where the stream count in Envoy and the stream count in QUICHE don't match up. To overcome this I'm overriding ShouldCreateOutgoingBidirectionalStream which turns a fatal crash into a QUIC_BUG which seems preferable. Added a TODO into sorting out the underlying issue entirely. Risk Level: low Testing: new integration test Part of #18160 Signed-off-by: Alyssa Wilk <[email protected]>
…8694) Actually fixing a quic stream limit issue. Also fixing an unrelated bug with clean stream shutdown occasionally causing spurious stream-close writes to a closed connection. Risk Level: High (changing connection pool limits) Testing: new integration test Docs Changes: n/a Release Notes: n/a Platform Specific Features: n/a Fixes #18160 Signed-off-by: Alyssa Wilk <[email protected]>
I tried to load test the http3 upgrade between two envoy proxies, the deploy model as:
fortio --http1--> client side envoy proxy --http3--> server side envoy proxy --http1--> envoy as application
The config of client side envoy proxy is
The config of server side envoy proxy is:
The envoy version is 1.20 and with --concurrency of 1.
If I test with follow command (10 connections with no qps limit):
fortio load -qps -1 -c 10 -t 10s --timeout 120s http://127.0.0.1:10001
Envoy won't crash but the server side proxy use almost 1 core and client side only use 0.1 core, then the result qps is poor.
But for test with 100 connections, the client side envoy would crash, the log as follow:
Any ideas? cc @alyssawilk :)
The text was updated successfully, but these errors were encountered: