[iOS][Fix] Add missing lock around assignment of cancellation handler in RCTImageLoader
#45454
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.
Summary:
When running the entire unit test suite of
RNTesterPods
withTSan
, I saw that occasionally a data race was detected on line 843 ofRCTImageLoader
. It seems the completion handler that does contain the lock aroundcancelLoad
is called concurrently with the value being assigned on line 843. Here there is no lock in place.Here is the output of
TSan
when I comment out my fix:Changelog:
[iOS][Fixed] Data race in
RCTImageLoader
related to assignment of cancellation block.Test Plan:
There are already tests in place for
RCTImageLoader
. I hope these will cover the fix.