[release/7.0-rc1] hold reference to SslContextHandle to prevent crashes #74367
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #73972 to release/7.0-rc1
Fixes #69125, #73621
/cc @wfurt
Customer Impact
This is fix for native crashes we seen in #73621 and #69125. However the root problem is in SslStream native shim so any application using SslStream on Linux may hit same problem unless TLS resume is explicitly disabled.
Without it, we may corrupt native memory and that can lead to hard crash or other weird behavior.
Testing
I was not able to reproduce the crashes locally. There is no single occurrence in
main
CI since the fix was submitted week ago. We did not see any new issue in SslStream tests and surrounding ares (HTTP*)Risk
We hold extra reference to safe handle to prevent cleanup when still in use. This could possibly lead to leak if something goes wrong. This whole logic (as well as the crash) can be avoided via bypass switch if needed.