Skip to content

Crash: EXC_BREAKPOINT in -[IMTelemetryComponent updatePayloadWithCommonKeys:] (Swift→ObjC bridging) — InMobiSDK 11.1.0 via AdMob mediation #73

@nevyn

Description

@nevyn

Summary

We're seeing a frequent fatal EXC_BREAKPOINT inside -[IMTelemetryComponent updatePayloadWithCommonKeys:] in InMobiSDK 11.1.0, integrated via Google Mobile Ads mediation. It's one of the top crashes in our app — roughly 100 crashes / 100 affected users in 7 days on our latest release (and ~1,200+ events across all app versions in the same window). It is not device- or OS-specific (breakdown below), and it has persisted across multiple InMobi SDK releases.

Environment

  • InMobiSDK: 11.1.0 (static XCFramework, manual integration)
  • Integration: Google Mobile Ads mediation — InMobiAdapter 11.1.0.0, GMA SDK 13.x
  • Crash reporter: Firebase Crashlytics
  • Platform: iOS (wide range, see below)

Exception

EXC_BREAKPOINT (SIGTRAP) — blamed frame -[IMTelemetryComponent updatePayloadWithCommonKeys:] (offset 72), library InMobiSDK.

Symbolicated stack (crashing thread)

swift_unknownObjectRetain                        <-- crash
String._bridgeToObjectiveCImpl()
bridgeAnythingNonVerbatimToObjectiveC(...)
_SwiftDeferredNSDictionary.bridgeValues()
_SwiftDeferredNSDictionary.getObjects(_:andKeys:count:)
@objc _SwiftDeferredNSDictionary.getObjects(_:andKeys:count:)
-[NSDictionary initWithDictionary:copyItems:]
-[__NSPlaceholderDictionary initWithDictionary:copyItems:]
-[IMTelemetryComponent updatePayloadWithCommonKeys:]
+[IMTelemetryComponent sendTelemetryEvent:withPayload:]
block_destroy_helper (x4)
-[IMRenderView sendCallbackForTemplateEvent:]
-[IMBaseProcessor sendCallbackForRichMediaTemplateEvent:]
__62-[IMExtrasProcessor submitTemplateEventWithParams:withScheme:]_block_invoke
_dispatch_call_block_and_release

Analysis / hypothesis

This is a Swift→Objective-C bridging fault. updatePayloadWithCommonKeys: calls -[NSDictionary initWithDictionary:copyItems:], which triggers _SwiftDeferredNSDictionary.bridgeValues() and then faults in swift_unknownObjectRetain — i.e. it retains an object that has already been deallocated (or is being mutated on another thread). The telemetry event is submitted from a background dispatch block (_dispatch_call_block_and_releaseIMExtrasProcessor submitTemplateEventWithParams:), which points to a lifetime / thread-safety issue in how the telemetry payload dictionary (or a value inside it) is captured and copied — a value appears to be released out from under the copy.

Frequency & spread (last 7 days)

OS versions (events): iOS 26.5.0 (793), 26.5.1 (201), 26.4.2 (57), 26.3.1 (41), 27.0 beta (24), 18.7.8 (22), 26.2.x (26) — spans iOS 18 through 27.

Devices: spread across ~30 models — iPhone 16 Pro Max (171), 15 Pro Max (130), 17 Pro Max (129), 16 Pro (124), 17 Pro (88), … down through iPhone 11 / SE and a handful of iPads. No single device dominates.

So it reproduces broadly across the fleet rather than on a specific device or OS.

Repro context

From breadcrumbs it occurs in the foreground, typically shortly after an ad / rich-media template callback. We don't have deterministic steps — it fires from InMobi's own telemetry dispatch.

Questions

  1. Is this a known issue, and is it addressed in a newer SDK (11.2.0 / 11.3.0)? We didn't see it called out in the changelogs.
  2. Is there anything on the integration side that could trigger it (e.g. values passed via extras)?
  3. Any mitigation guidance in the meantime?

Happy to provide a full Crashlytics export or additional sample events.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions