-
Notifications
You must be signed in to change notification settings - Fork 53
Description
When CrowdinSDK realtime updates are enabled, calling UILabel.refresh() triggers a crash (EXC_BAD_ACCESS) inside StringsLocalizationDataSource.findKey(string:). The crash occurs during dictionary iteration while looking up localization keys, likely due to a dangling pointer or concurrent access to the internal localization dictionary.
To Reproduce:
- Enable CrowdinSDK realtime updates in the app.
- Display a UILabel that uses Localization.keyForString or the SDK’s swizzled setText to apply localized strings.
- Trigger a localization refresh (e.g., update user language or receive a Crowdin realtime update).
- Observe the app crashing with EXC_BAD_ACCESS in StringsLocalizationDataSource.findKey(string:).
Expected behavior
UILabels should safely update their text without crashing when Crowdin realtime localization updates occur.
Screenshots
Device: iPhone 12 / Simulator
OS: iOS 26.0, using xcode 26.0
Additional context
Crash occurs consistently when a UILabel is refreshed during a Crowdin realtime update.
Stack trace indicates dictionary iteration in StringsLocalizationDataSource.findKey(string:) fails.
Suspected causes: concurrent dictionary access, dangling pointer, or Crowdin realtime update closure retaining a deallocated object.
Disabling Crowdin realtime updates prevents the crash.