Skip to content
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

heartbeat thread should not call transport.disconnect_socket() #389

Open
mikebonnet opened this issue Jun 22, 2022 · 0 comments
Open

heartbeat thread should not call transport.disconnect_socket() #389

mikebonnet opened this issue Jun 22, 2022 · 0 comments

Comments

@mikebonnet
Copy link
Contributor

Python sockets are not thread-safe. The receiver_thread created in BaseTransport.start() should be the only thing interacting directly with the socket, unless explicit locks are involved. When the HeartbeatListener detects a heartbeat timeout, it calls transport.disconnect_socket() from the heartbeat thread. This closes and deallocates the socket while the receiver_thread is still attempting to read from it. This can result in memory corruption and segfaults.

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

No branches or pull requests

1 participant