Skip to content

EXC_BAD_ACCESS crash during Crowdin realtime localization update on UILabel #349

@sth-nvajda

Description

@sth-nvajda

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:

  1. Enable CrowdinSDK realtime updates in the app.
  2. Display a UILabel that uses Localization.keyForString or the SDK’s swizzled setText to apply localized strings.
  3. Trigger a localization refresh (e.g., update user language or receive a Crowdin realtime update).
  4. 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

Image

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions