firebase-ios-sdk: AppStore Distribution / Release app does not send crashes due to Exported Symbols File missing __mh_execute_header

[REQUIRED] Step 1: Describe your environment

  • Xcode version: 11.3.1
  • Firebase SDK version: Firebase/Crashlytics (6.15.0):
  • Firebase Component: Crashlytics
  • Component version: 4.0.0-beta.4
  • Installation method: CocoaPods (select one)

[REQUIRED] Step 2: Describe the problem

We’ve identified, that after signing the app with AppStore certificate, Firebase Crashlytics stops working. The problem does not occur while signing the app with AdHoc certificate. We are using Apple Distribution Certificate.

The errors we’ve found in the console: <Forced crash, re-ran the app> [Firebase/Crashlytics] Version 4.0.0-beta.4 … [Firebase/Crashlytics][I-CLS000000] An application must have a valid bundle identifier in its Info.plist [Firebase/Crashlytics][I-CLS000000] Crash reporting could not be initialized [Firebase/InstanceID][I-IID003014] Error while reading embedded mobileprovision Error Domain=NSCocoaErrorDomain Code=260 “The file “embedded.mobileprovision” couldn’t be opened because there is no such file.” UserInfo={NSFilePath=/private/var/containers/Bundle/Application/71738F66-30A3-4D4E-A60E-85F7FB3614AC/X.app/embedded.mobileprovision, NSUnderlyingError=0x282bc5b00 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}

I’ve unzipped the ipa file and:

  • there is Info.plist, it contains bundle identifier
  • there is mobileprovision file, looks good.

The app would not even run without files above, so these errors seems like incorrect ones.

Steps to reproduce:

  1. Build the app with AdHoc profile, force a crash - works fine. Crashes are sent to Crashlytics.
  2. Build the app with AppStore profile, distribute via testflight.
  3. Install it from TestFlight, run, force a crash
  4. Re-open the app. Crash should be sent- it is not. Check out logs:
  5. Errors from Step 2 are visible.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 14
  • Comments: 41 (16 by maintainers)

Most upvoted comments

This doesn’t make any sense.

I have several projects that uses Firebase. Only two are affected by this problem, but none of the projects use an Exported Symbols File.

I’ve created a new project that’s effectively an empty app with Firebase SDK integrated, with no Exported Symbols File set and it’s reporting crashes just fine.

@samedson Found it. The project sets Exported Symbols File in Release builds. This file is empty.

Great find @pmfon - now to figure out why this will fail in App Store signed apps. Going to do some research

Here’s what we found so far

  • the difference seems to be between debug and release versions (not necessarily signed, since it can be reproduced in the simulator)
  • disabled striping in the release build and the symbol still can’t be found though it’s in the binary if you check with ‘nm’
  • only changed the main project settings, the Pods configs were not touched
  • calling dlsym from the AppDelegate has the same effect
  • the legacy SDK (integrated with CocoaPods), with the same project configuration, works

Crashlytics, I’m also experiencing same problem. This is sending me the crash report in debug mode, but when I use signing the build and push to TestFlight it is not sending me the report.