Skip to content

Duplicate Class Conflict with AXMediaUtilities.framework #44

@diturrizagac

Description

@diturrizagac

Summary

The MetaMap framework (specifically IncdOnboarding.framework) causes a crash on iOS 16.6 and iOS 17 devices during app launch due to a duplicate class name conflict with Apple's system framework AXMediaUtilities.framework. The crash occurs in the Objective-C runtime's map_images_nolock function and prevents the app from launching.

Crash Details:

  • Error Type: EXC_BAD_ACCESS (code=2, address=0x1049b4320)
  • Location: libobjc.A.dylibmap_images_nolock
  • Affected iOS Versions: iOS 16.6 and iOS 17.x (fixed in iOS 18+)
  • Trigger: App launch / Framework loading phase

Root Cause

The IncdOnboarding.framework defines a class named Prediction, which conflicts with Apple's AXMediaUtilities.framework that also contains a class named Prediction.

iOS 16.6 and iOS 17 have a known bug in the Objective-C runtime's class loading mechanism. The map_images_nolock function in these versions doesn't properly handle duplicate class definitions, leading to memory corruption when attempting to register classes. This bug was fixed in iOS 18+, which is why the crash doesn't occur on newer iOS versions.

Console Warnings

When the crash occurs, the following warning appears in the console:

objc[PID]: Class Prediction is implemented in both 
/Library/Developer/.../AXMediaUtilities.framework/AXMediaUtilities (0x1bfd398c8) 
and 
/Users/.../DerivedData/.../IncdOnboarding.framework/IncdOnboarding (0x10c16cc98). 
One of the two will be used. Which one is undefined.

Impact

  • Severity: CRITICAL - App crashes on launch for iOS 16.6 and iOS 17 users
  • Affected Users: All users on iOS 16.6 and iOS 17 devices
  • Blocking Issue: Yes - Prevents app from launching on iOS 16.6 and iOS 17

Requested Solution

We request one of the following solutions:

  1. Rename the Prediction class in IncdOnboarding.framework to avoid the conflict with AXMediaUtilities.framework
  2. Provide a version without IncdOnboarding.framework if it's not essential
  3. Provide an official workaround for iOS 16.6/17 compatibility
  4. Update the framework to use a namespaced class name to prevent conflicts

Testing Environment

  • Xcode Version: Latest (Xcode 16.x)
  • iOS Versions Affected: iOS 16.6, iOS 17.x
  • iOS Versions Working: iOS 18+
  • Device Types: Both Simulator and Physical Devices

Additional Context

This is a known iOS 16.6/17 runtime bug that manifests when frameworks with duplicate class names are loaded. The integration of MetaMap exposed this issue due to the Prediction class conflict. While Apple fixed this bug in iOS 18+, we need MetaMap to be compatible with iOS 16.6 and iOS 17 for our user base.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions