proxy-types: prevent race condition when reading client.m_context.connection#293
Closed
ViniciusCestarii wants to merge 1 commit into
Closed
proxy-types: prevent race condition when reading client.m_context.connection#293ViniciusCestarii wants to merge 1 commit into
ViniciusCestarii wants to merge 1 commit into
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
This was referenced Jun 9, 2026
Contributor
Author
|
Just looked #286. Closing this pr since this is a duplicate |
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.
Fixes data race on reading m_context.connection in clientDestroy() in proxy-types.h.
The read was unsynchronized while the disconnect cleanup callback (registered with addSyncCleanup in the ProxyClientBase constructor) clears the same field under m_context.loop->m_mutex. When a ProxyClient is destroyed on the async cleanup thread while the connection is torn down on the event loop thread, the two accesses race.
In practice the race is not harmfull because the value only selects a log message but it can fail the TSan build, which makes the CI fail.
The regression test added in 90be835 let the disconnect-during-cleanup path run, exposing the race under TSan.
Fix: lock m_context.loop->m_mutex around the read, matching the lock the disconnect callback already uses for the write.