[Fix Python Deadlock] Guard grpc_ssl_credentials_create with nogil (v1.59.x backport)#34725
Merged
XuanWang-Amos merged 1 commit intogrpc:v1.59.xfrom Oct 18, 2023
Conversation
…rpc#34712) Fix: grpc#34672 With some recent changes in core, now `grpc_ssl_credentials_create` is guarded by `gpr_once_init`. In our current implementation, The thread got `gpr_once_init` lock might require GIL lock during the execution of `grpc_ssl_credentials_create`, which might cause a deadlock if another thread is holding GIL lock and waiting for `gpr_once_init` lock. This change adds `with nogil` to calls to native function `grpc_ssl_credentials_create` to make sure GIL is released before calling `grpc_ssl_credentials_create`. <!-- If you know who should review your pull request, please assign it to that person, otherwise the pull request would get assigned randomly. If your pull request is for a specific language, please add the appropriate lang label. -->
gnossen
approved these changes
Oct 18, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 #34712 to v1.59.x.
Fix: #34672
With some recent changes in core, now
grpc_ssl_credentials_createis guarded bygpr_once_init. In our current implementation, The thread gotgpr_once_initlock might require GIL lock during the execution ofgrpc_ssl_credentials_create, which might cause a deadlock if another thread is holding GIL lock and waiting forgpr_once_initlock.This change adds
with nogilto calls to native functiongrpc_ssl_credentials_createto make sure GIL is released before callinggrpc_ssl_credentials_create.